slice() 方法将数组的一部分的浅拷贝返回到从开始到结束(不包括结束)选择的新数组对象中,其中开始和结束表示该数组中项目的索引。 不会修改原始数组。
使用 slice 方法返回数组的一部分
slice (Array.prototype.slice()
) 方法可以从已有数组中返回指定元素。
它接受两个参数,第一个规定从何处开始选取,第二个规定从何处结束选取(不包括该元素)。
如果没有传参,则默认为从数组的开头开始到结尾结束,这是复制
整个数组的简单方式。
slice 返回一个新数组,不会修改原始数组。
简单的例子:
1
2
3
|
const arr = ["Cat", "Dog", "Tiger", "Zebra"];
const newArray = arr.slice(1, 3); // ["Dog", "Tiger"]
|
复杂的例子:
1
2
3
4
5
6
7
8
9
|
function sliceArray(anim, beginSlice, endSlice) {
return anim.slice(beginSlice, endSlice)
}
const inputAnim = ["Cat", "Dog", "Tiger", "Zebra", "Ant"];
sliceArray(inputAnim, 1, 3); // [ 'Dog', 'Tiger' ]
|
使用 slice 取代 splice 从数组中移除元素
使用数组时经常遇到要删除一些元素并保留数组剩余部分的情况。
为此,JavaScript 提供了 splice 方法,
它接收两个参数:从哪里开始删除项目的索引,和要删除的项目数。
如果没有提供第二个参数,默认情况下是移除一直到结尾的所有元素。
但 splice 方法会改变调用它的原始数组。 举个例子:
1
2
3
4
|
const cities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];
cities.splice(3, 1);
console.log(cities); // ["Chicago", "Delhi", "Islamabad", "Berlin"]
|
slice 方法不会改变原始数组,而是返回一个可以保存到变量中的新数组。
slice 方法接收两个参数,从开始索引开始选取到结束(不包括该元素),并在新数组中返回这些元素。
使用 slice 方法替代 splice 有助于避免数组变化产生的副作用。
1
2
3
4
5
6
7
8
9
|
function nonMutatingSplice(cities) {
return cities.slice(0, 3);
}
const inputCities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];
nonMutatingSplice(inputCities); // ["Chicago", "Delhi", "Islamabad"]
|