简单使用:
数组上的slice方法返回数组一部分的浅拷贝。它需要两个数字, astart和 an end。每个数组都有一个slice方法。这是一个简单的例子:
let myArray = [ '⚡️', '🔎', '🔑', '🔩' ];
let newArray = myArray.slice(2, 3);
console.log(newArray); // [ '🔑' ]
slice该方法有两个可选参数start, 和end。如果您愿意,您可以同时提供两者、仅提供start或都不提供 - 所以所有这些都是有效的:
let arrayOne = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayOneSlice = arrayOne.slice(2, 3); // [ '🔑' ]
let arrayTwo = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayTwoSlice = arrayTwo.slice(2); // [ '🔑', '🔩' ]
let arrayThree = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayThreeSlice = arrayThree.slice(); // [ '⚡️', '🔎', '🔑', '🔩' ]
结尾:
如果使用了大于数组长度的值,slice则只延续到数组的末尾。如果使用负值,则表示距数组末尾的偏移量。例如,(2, -1)将从数组的开头开始为 2,从数组的结尾开始为 -1:
let arrayOne = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayOneSlice = arrayOne.slice(2, -1); // [ '🔑' ]
let arrayOneSliceAgain = arrayOne.slice(1, -1); // [ '🔎', '🔑' ]
使用切片制作数组的副本
Slice不会改变原始数组。相反,它会创建一个新的浅拷贝。因此,您现有的数组仍将继续包含相同的值:
let arrayOne = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayOneSlice = arrayOne.slice(2, 3);
console.log(arrayOne); // [ '⚡️', '🔎', '🔑', '🔩' ]
console.log(arrayOneSlice); // [ '🔑' ]
由于slice制作了数组的浅拷贝,它有时也用于复制和制作数组数据的副本。例如,一个空slice函数也会在内存中创建一个新数组 - 允许您在内存中拥有相同数组的两个副本且具有相同的引用:
let arrayOne = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayOneSlice = arrayOne.slice();
arrayOneSlice[2] = '⚡️'
console.log(arrayOne); // [ '⚡️', '🔎', '🔑', '🔩' ]
console.log(arrayOneSlice); // [ '⚡️', '🔎', '⚡️', '🔩' ]