slice() 方法:
特点
- 不会改变原始数组!!
- 返回从原数组中提取的元素组成的新数组
- 浅拷贝
语法
array.slice(start, end)
start
:指定从哪个索引开始提取元素。如果省略,则从索引 0 开始提取。如果是负数,则表示从末尾开始计算的位置。end
:可选参数,指定在哪个索引处结束提取元素(但不包括该索引处的元素)。如果省略,则提取到数组的末尾。如果是负数,则表示从末尾开始计算的位置。
用法示例:
const array = [1, 2, 3, 4, 5];
const slicedArray = array.slice(1, 4); // 从索引 1 开始提取,到索引 4(不包括)结束
console.log(slicedArray); // 输出: [2, 3, 4]
const array = [1, 2, 3, 4, 5];
const slicedArray = array.slice(); // 从索引 0 开始提取,到末尾结束
console.log(slicedArray); // 输出: [1, 2, 3, 4, 5]
const array = [1, 2, 3, 4, 5];
const slicedArray = array.slice(-1); // 从索引 最后一个元素 开始提取,到末尾结束
console.log(slicedArray); // 输出: [5]
const array = [1, 2, 3, 4, 5];
const slicedArray = array.slice(-4, -1);
console.log(slicedArray); // 输出: [2, 3, 4]
splice() 方法:
特点
- 会修改原数组
- 返回被删除的元素
- 可以实现删除、新增、修改元素
语法:
array.splice(start, deleteCount, item1, item2, ...)
start
:指定修改数组的起始位置,即从哪个索引开始添加或删除元素。deleteCount
:可选参数,指定要删除的元素个数。 如果省略,则删除从start
索引开始到数组末尾的所有元素。item1, item2, ...
:可选参数,要添加到数组的新元素。
用法示例:
const array = [1, 2, 3, 4, 5];
// 从索引 2 开始删除 1 个元素,并插入 'a' 和 'b'
console.log(array.splice(2, 1, "a", "b")); //输出:3
console.log(array); // 输出: [1, 2, 'a', 'b', 4, 5]
const array = [1, 2, 3, 4, 5];
// 从索引 0 开始,删除 0个 元素,插入2.5
console.log(array.splice(2, 0, 2.5)); // 输出:[]
console.log(array); // 1, 2, 2.5, 3, 4, 5]
const array = [1, 2, 3, 4, 5];
// 从索引 0 开始删除 所有 元素
console.log(array.splice(0)); // 输出:[1, 2, 3, 4, 5]
console.log(array); // 输出: []
const array = [1, 2, 3, 4, 5];
array.splice(0, 0); // 从索引 0 开始删除 0个 元素
console.log(array); // 输出: [1, 2, 3, 4, 5]
总的来说,slice()
用于提取数组中的一部分,而不会改变原数组,而 splice()
用于修改数组,可以删除元素、插入新元素或同时做这两件事。