splice
方法,该方法接受索引的参数,该索引指示从何处开始删除项目,然后是要删除的项目数。如果未提供第二个参数,则默认为通过结尾删除项目。但是, splice
方法会改变调用它的原始数组。这是一个例子: var cities = [“芝加哥”,“德里”,“伊斯兰堡”,“伦敦”,“柏林”];正如我们在上一次挑战中看到的那样,
cities.splice(3,1); //返回“London”并从cities数组中删除它
//现在是城市[“芝加哥”,“德里”,“伊斯兰堡”,“柏林”]
slice
方法不会改变原始数组,而是返回一个可以保存到变量中的新数组。回想一下, slice
方法为索引开始和结束slice
采用两个参数(结束是非包含的),并在新数组中返回这些项。使用slice
方法而不是splice
有助于避免任何阵列变异的副作用。 slice
而不是splice
重写函数nonMutatingSplice
。它应该将提供的cities
数组限制为3的长度,并返回仅包含前三项的新数组。不要改变提供给函数的原始数组。 slice
方法。
testString: 'assert(code.match(/\.slice/g), "Your code should use the slice
method.");'
- text: 您的代码不应使用splice
方法。
testString: 'assert(!code.match(/\.splice/g), "Your code should not use the splice
method.");'
- text: inputCities
数组不应更改。
testString: 'assert(JSON.stringify(inputCities) === JSON.stringify(["Chicago", "Delhi", "Islamabad", "London", "Berlin"]), "The inputCities
array should not change.");'
- text: 'nonMutatingSplice(["Chicago", "Delhi", "Islamabad", "London", "Berlin"])
应该返回["Chicago", "Delhi", "Islamabad"]
。'
testString: 'assert(JSON.stringify(nonMutatingSplice(["Chicago", "Delhi", "Islamabad", "London", "Berlin"])) === JSON.stringify(["Chicago", "Delhi", "Islamabad"]), "nonMutatingSplice(["Chicago", "Delhi", "Islamabad", "London", "Berlin"])
should return ["Chicago", "Delhi", "Islamabad"]
.");'
```