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