📅  最后修改于: 2023-12-03 15:24:30.916000             🧑  作者: Mango
在 JavaScript 中,复制一个数组是一个常见的操作。如果需要复制数组中的所有元素,可以使用 slice
方法。但是,如果仅需要复制除了最后一个元素之外的所有元素,该怎么做呢?
下面给出几种实现方式:
slice
和 length
属性可以使用数组原型上的 slice
和 length
属性来实现:
const originalArray = [1, 2, 3, 4, 5];
const newArray = originalArray.slice(0, originalArray.length - 1);
console.log(newArray); // [1, 2, 3, 4]
上面的代码中,slice
方法的第一个参数为起始位置,第二个参数为结束位置(不包括该位置的元素)。使用 length
属性减去 1,可以得到除了最后一个元素之外所有元素的下标范围。
filter
方法可以使用数组原型上的 filter
方法来实现:
const originalArray = [1, 2, 3, 4, 5];
const newArray = originalArray.filter((_, index) => index < originalArray.length - 1);
console.log(newArray); // [1, 2, 3, 4]
上面的代码中,filter
方法的参数为一个回调函数,回调函数中的第二个参数为元素下标。通过判断元素下标是否小于数组长度减 1,可以得到除了最后一个元素之外所有元素。
slice
和扩展运算符可以使用数组原型上的 slice
和扩展运算符来实现:
const originalArray = [1, 2, 3, 4, 5];
const newArray = [...originalArray.slice(0, originalArray.length - 1)];
console.log(newArray); // [1, 2, 3, 4]
上面的代码中,slice
方法返回一个新数组,扩展运算符则将这个新数组的所有元素复制到了一个新数组中,同时省略了最后一个元素。
以上就是三种常见的方法。当然,还有其他实现方式,例如使用 pop
方法先弹出最后一个元素,再使用 slice
方法复制所有元素,但是这样会改变原数组,不太推荐。