JavaScript 数组 splice()

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.lengthsplice() 不会删除任何内容,而是从数组末尾开始添加参数。
  • 如果 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 开始删除到数组末尾的所有元素。
  • 如果 deleteCount0负数,则不删除任何元素。但是,至少应指定一个新元素。
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"]

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战