2020-10-06 23:10:08 +05:30

3.2 KiB
Raw Blame History

id, challengeType, forumTopicId, localeTitle
id challengeType forumTopicId localeTitle
587d7b7b367417b2b2512b13 1 301157 使用扩展运算符复制数组

Description

slice()已经能让我们从一个数组中选择一些元素来复制到新数组中了,而 ES6 中又新引入了一个简洁且可读性强的语法展开运算符spread operator,它能让我们方便地复制数组中的所有元素。展开语法是这样的:... 在实践中,我们可以这样用展开运算符来复制一个数组:
let thisArray = [true, true, undefined, false, null];
let thatArray = [...thisArray];
// thatArray 等于 [true, true, undefined, false, null]
// thisArray 保持不变,等于 thatArray

Instructions

我们已经定义了一个copyMachine函数,它接受arr(一个数组)和num(一个数字)作为输入参数。该函数应该返回一个由numarr组成的新数组。我们已经为你写好了大部分的代码,但它还不能正确地工作。请修改这个函数,使用展开语法,使该函数正确工作(提示:我们已经学到过的一个方法很适合用在这里!)

Tests

tests:
  - text: '<code>copyMachine([true, false, true], 2)</code>应该返回<code>[[true, false, true], [true, false, true]]</code>'
    testString: assert.deepEqual(copyMachine([true, false, true], 2), [[true, false, true], [true, false, true]]);
  - text: '<code>copyMachine([1, 2, 3], 5)</code>应该返回<code>[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]</code>'
    testString: assert.deepEqual(copyMachine([1, 2, 3], 5), [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]);
  - text: '<code>copyMachine([true, true, null], 1)</code>应该返回<code>[[true, true, null]]</code>'
    testString: assert.deepEqual(copyMachine([true, true, null], 1), [[true, true, null]]);
  - text: '<code>copyMachine([&quot;it works&quot;], 3)</code>应该返回<code>[[&quot;it works&quot;], [&quot;it works&quot;], [&quot;it works&quot;]]</code>'
    testString: assert.deepEqual(copyMachine(['it works'], 3), [['it works'], ['it works'], ['it works']]);
  - text: <code>copyMachine</code>函数中应该对数组<code>arr</code>使用<code>spread operator</code>。
    testString: assert(removeJSComments(code).match(/\.\.\.arr/));

Challenge Seed

function copyMachine(arr, num) {
  let newArr = [];
  while (num >= 1) {
    // change code below this line

    // change code above this line
    num--;
  }
  return newArr;
}

// change code here to test different cases:
console.log(copyMachine([true, false, true], 2));

After Test

const removeJSComments = str => str.replace(/\/\*[\s\S]*?\*\/|\/\/.*$/gm, '');

Solution

function copyMachine(arr,num){
	let newArr=[];
	while(num >=1){
	// change code below this line 
	newArr.push([...arr]);
	//change code above this line
	num--;
	}
	return newArr;
}
console.log(copyMachine([true, false, true], 2));