📜  JavaScript数组splice()

📅  最后修改于: 2020-09-27 05:58:47             🧑  作者: Mango

JavaScript Array 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:对不同的deleteCount值使用splice()
  • 如果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()
  • 如果deleteCount被忽略或大于数组中剩余的元素数,它将删除数组开始到结尾的所有元素。
  • 如果deleteCount0negative ,则不会删除任何元素。但是,至少应指定一个新元素。
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"]

推荐读物:

  • JavaScript Array.pop()
  • JavaScript Array.push()