splice()
方法用于修改数组(添加、删除或替换元素)。
示例
let prime_numbers = [2, 3, 5, 7, 9, 11];
// replace 1 element from index 4 by 13
let removedElement = prime_numbers.splice(4, 1, 13);
console.log(removedElement);
console.log(prime_numbers);
// Output: [ 9 ]
// [ 2, 3, 5, 7, 13, 11 ]
splice() 语法
splice()
方法的语法是:
arr.splice(start, deleteCount, item1, ..., itemN)
这里,arr 是一个数组。
splice() 参数
splice()
方法接受以下参数:
- start - 开始修改数组的索引。
- deleteCount (可选)- 从
start
开始要删除的元素数量。 - item1, ..., itemN (可选)- 要添加到
start
索引处的元素。如果未指定,splice()
将仅从数组中删除元素。
splice() 返回值
- 返回一个包含已删除元素的数组。
注意:splice()
方法会更改原始数组。
示例 1:使用 splice() 方法
let languages = ["JavaScript", "Python", "Java", "Lua"];
// replacing "Java" & "Lua" with "C" & "C++"
let removed = languages.splice(2, 2, "C", "C++");
console.log(removed); // [ 'Java', 'Lua' ]
console.log(languages); // [ 'JavaScript', 'Python', 'C', 'C++' ]
// adding elements without deleting existing elements
let removed1 = languages.splice(1, 0, "Java", "Lua");
console.log(removed1); // []
console.log(languages); // [ 'JavaScript', 'Java', 'Lua', 'Python', 'C', 'C++' ]
// removing 3 elements
let removed2 = languages.splice(2, 3);
console.log(removed2); // [ 'Lua', 'Python', 'C' ]
console.log(languages); // [ 'JavaScript', 'Java', 'C++' ]
输出
[ 'Java', 'Lua' ] [ 'JavaScript', 'Python', 'C', 'C++' ] [] [ 'JavaScript', 'Java', 'Lua', 'Python', 'C', 'C++' ] [ 'Lua', 'Python', 'C' ] [ 'JavaScript', 'Java', 'C++' ]
示例 2:使用 splice() 指定不同的 deleteCount 值
- 如果 start > array.length,
splice()
不会删除任何内容,而是从数组末尾开始添加参数。 - 如果 start < 0,则索引从后往前计算(array.length + start)。例如,-1 表示最后一个元素。
- 如果 array.length + start < 0,则从索引 0 开始。
let languages = ["JavaScript", "Python", "Java", "Lua"];
// does not removes, only appends to the end
let removed = languages.splice(5, 2, "C++");
console.log(removed); // []
console.log(languages); // ["JavaScript", "Python", "Java", "Lua", "C++"]
// remove last element and add 3 more elements
let removed1 = languages.splice(-1, 1, "Swift", "Scala", "Go");
console.log(removed1); // [ "C++" ]
console.log(languages); // ["JavaScript", "Python", "Java", "Lua", "Swift", "Scala", "Go"]
输出
[] ["JavaScript", "Python", "Java", "Lua", "C++"] [ 'C++' ] ["JavaScript", "Python", "Java", "Lua", "Swift", "Scala", "Go"]
示例 3:使用 splice() 指定不同的 start 值
- 如果省略 deleteCount 或其值大于数组中剩余元素的数量,则从 start 开始删除到数组末尾的所有元素。
- 如果 deleteCount 为 0 或 负数,则不删除任何元素。但是,至少应指定一个新元素。
let languages = ["JavaScript", "Python", "Java", "Lua"];
// removes everything from start
let removed = languages.splice(1);
console.log(removed); // [ "Python", "Java", "Lua" ]
console.log(languages); // [ "JavaScript" ]
// remove none & add 3 more element
let removed1 = languages.splice(1, -2, "Swift", "Scala", "Go");
console.log(removed1); // [ ]
console.log(languages); // [ "JavaScript", "Swift", "Scala", "Go" ]
输出
[ "Python", "Java", "Lua" ] [ "JavaScript" ] [ ] ["JavaScript", "Swift", "Scala", "Go"]
另请阅读