在JavaScript中,slice()
和splice()
是数组的两种常用方法,它们有不同的功能和用法。
slice(start, end)
:slice()
方法用于从一个数组中提取(截取)指定位置的元素,然后返回一个新的数组,原始数组保持不变。- 它接受两个参数:
start
和end
。start
表示开始截取的位置(包括该位置),end
表示结束截取的位置(不包括该位置)。 - 如果省略
end
参数,则会截取从start
位置到数组末尾的所有元素。 slice()
方法不会修改原始数组,而是返回一个从原始数组中截取的新数组。
示例:
let fruits = ['apple', 'banana', 'orange', 'mango', 'kiwi'];
let slicedFruits = fruits.slice(1, 3);
console.log(slicedFruits); // 输出: ['banana', 'orange']
// 原始数组不受影响
console.log(fruits); // 输出: ['apple', 'banana', 'orange', 'mango', 'kiwi']
splice(start, deleteCount, item1, item2, ...)
:splice()
方法用于从数组中删除、替换或插入元素,同时修改原始数组,并返回被删除的元素组成的新数组。- 它接受至少一个参数
start
,表示开始修改的位置。 - 可选参数
deleteCount
表示要删除的元素数量,如果省略或为0,则不删除任何元素。 - 可选参数
item1, item2, ...
表示要插入到数组中的新元素。 splice()
方法会修改原始数组,并返回一个由被删除元素组成的新数组。
示例:
let fruits = ['apple', 'banana', 'orange', 'mango', 'kiwi'];
let deletedFruits = fruits.splice(1, 2, 'pear', 'grape');
console.log(fruits); // 输出: ['apple', 'pear', 'grape', 'mango', 'kiwi']
console.log(deletedFruits); // 输出: ['banana', 'orange']
// 删除元素
fruits.splice(2, 1);
console.log(fruits); // 输出: ['apple', 'pear', 'mango', 'kiwi']
// 插入元素
fruits.splice(1, 0, 'pineapple');
console.log(fruits); // 输出: ['apple', 'pineapple', 'pear', 'mango', 'kiwi']
总结:
slice()
方法是从数组中提取子数组,并返回一个新数组,不改变原始数组。splice()
方法则用于对数组进行修改,可以删除、替换和插入元素,并返回被删除的元素组成的新数组。