--- id: 9d7123c8c441eeafaeb5bdef title: Remove Elements from an Array Using slice Instead of splice challengeType: 1 videoUrl: '' localeTitle: 使用切片从阵列中删除元素而不是拼接 --- ## Description
使用数组时的常见模式是当您想要删除项目并保留数组的其余部分时。 JavaScript为此提供了splice方法,该方法接受索引的参数,该索引指示从何处开始删除项目,然后是要删除的项目数。如果未提供第二个参数,则默认为通过结尾删除项目。但是, splice方法会改变调用它的原始数组。这是一个例子:
var cities = [“芝加哥”,“德里”,“伊斯兰堡”,“伦敦”,“柏林”];
cities.splice(3,1); //返回“London”并从cities数组中删除它
//现在是城市[“芝加哥”,“德里”,“伊斯兰堡”,“柏林”]
正如我们在上一次挑战中看到的那样, slice方法不会改变原始数组,而是返回一个可以保存到变量中的新数组。回想一下, slice方法为索引开始和结束slice采用两个参数(结束是非包含的),并在新数组中返回这些项。使用slice方法而不是splice有助于避免任何阵列变异的副作用。
## Instructions
使用slice而不是splice重写函数nonMutatingSplice 。它应该将提供的cities数组限制为3的长度,并返回仅包含前三项的新数组。不要改变提供给函数的原始数组。
## Tests
```yml tests: - text: 您的代码应该使用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"].");' ```
## Challenge Seed
```js function nonMutatingSplice(cities) { // Add your code below this line return cities.splice(3); // Add your code above this line } var inputCities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"]; nonMutatingSplice(inputCities); ```
## Solution
```js // solution required ```