从数组中删除元素(拼接)
Remove element from array (splice)
关于 .splice()
方法的基本问题,以及如何最好地从数组中删除元素。
我想使用 .splice()
从数组中删除一个项目,但是当我这样做时,我希望返回原始数组 减去 删除的元素。 .splice()
returns 删除的元素 代替。
var arr = [1, 2, 3, 4, 5, 6, 7]
var newArr = arr.splice(3, 1)
console.log(newArr) // [4]
// whereas I want [1, 2, 3, 5, 6, 7]
最好、最eloquent的方法是什么?
.splice
就地改变数组 和 returns 删除的元素。所以除非你真的 需要 一个 returns 数组本身的函数,只需访问 arr
:
var arr = [1, 2, 3, 4, 5, 6, 7]
arr.splice(3, 1)
console.log(arr) // [1, 2, 3, 5, 6, 7]
您可以创建一个包装函数来执行拼接和 returns 数组:
function remove(arr, index) {
arr.splice(index, 1)
return arr;
}
var newArr = remove(arr, 3);
// Note: `newArr` is not a new array, it has the same value as `arr`
如果您想创建一个新数组,而不改变原始数组,您可以使用.filter
:
var newArr = arr.filter(function(element, index) {
return index !== 3;
}); // [1, 2, 3, 5, 6, 7]
arr; // [1, 2, 3, 4, 5, 6, 7]
使用展开运算符,您可以:
var arr = [1,2,3,4,5,6],
indexToRemove = 3,
newArr = [
...arr.slice(0,indexToRemove),
...arr.slice(indexToRemove+1)
]
或者如果你想使用 ES5,它可以看起来像:
var arr = [1,2,3,4,5,6],
indexToRemove = 3,
newArr = [].concat(arr.slice(0,indexToRemove)).concat(arr.slice(indexToRemove+1))
关于 .splice()
方法的基本问题,以及如何最好地从数组中删除元素。
我想使用 .splice()
从数组中删除一个项目,但是当我这样做时,我希望返回原始数组 减去 删除的元素。 .splice()
returns 删除的元素 代替。
var arr = [1, 2, 3, 4, 5, 6, 7]
var newArr = arr.splice(3, 1)
console.log(newArr) // [4]
// whereas I want [1, 2, 3, 5, 6, 7]
最好、最eloquent的方法是什么?
.splice
就地改变数组 和 returns 删除的元素。所以除非你真的 需要 一个 returns 数组本身的函数,只需访问 arr
:
var arr = [1, 2, 3, 4, 5, 6, 7]
arr.splice(3, 1)
console.log(arr) // [1, 2, 3, 5, 6, 7]
您可以创建一个包装函数来执行拼接和 returns 数组:
function remove(arr, index) {
arr.splice(index, 1)
return arr;
}
var newArr = remove(arr, 3);
// Note: `newArr` is not a new array, it has the same value as `arr`
如果您想创建一个新数组,而不改变原始数组,您可以使用.filter
:
var newArr = arr.filter(function(element, index) {
return index !== 3;
}); // [1, 2, 3, 5, 6, 7]
arr; // [1, 2, 3, 4, 5, 6, 7]
使用展开运算符,您可以:
var arr = [1,2,3,4,5,6],
indexToRemove = 3,
newArr = [
...arr.slice(0,indexToRemove),
...arr.slice(indexToRemove+1)
]
或者如果你想使用 ES5,它可以看起来像:
var arr = [1,2,3,4,5,6],
indexToRemove = 3,
newArr = [].concat(arr.slice(0,indexToRemove)).concat(arr.slice(indexToRemove+1))