在这个帖子里已经有很多精彩的答案了。然而,我想分享我的经验,当我试图解决“从数组中删除第n个元素”在ES5上下文中。
JavaScript数组有不同的方法从开始或结束添加/删除元素。这些都是:
arr.push(ele) - To add element(s) at the end of the array
arr.unshift(ele) - To add element(s) at the beginning of the array
arr.pop() - To remove last element from the array
arr.shift() - To remove first element from the array
基本上上述方法都不能直接用于从数组中删除第n个元素。
一个值得注意的事实是,这与java迭代器的相反
使用它可以删除集合的第n个元素
而迭代。
这基本上只留给我们一个数组方法array。splice来执行删除第n个元素(你也可以用这些方法做其他事情,但在这个问题的上下文中,我主要关注的是删除元素):
Array.splice(index,1) - removes the element at the index
以下是从原始答案复制的代码(带有注释):
Var arr = [" 1 ", " 2 ", " 3 ", " 4 "];
Var I = arrr .length;//初始化计数器为数组长度
while (i——)//递减计数器,否则将遇到IndexOutBounds异常
{
If (arr[i] === "four" || arr[i] === "two") {
//splice修改原始数组
加勒比海盗。拼接(我,1);//永远不会遇到IndexOutBounds异常
console.log(“元素移除。加勒比海盗:”);
}其他{
console.log("元素未删除。加勒比海盗:”);
}
console.log (arr);
}
另一个值得注意的方法是Array.slice。然而,此方法的返回类型是删除的元素。这也不会修改原始数组。修改后的代码片段如下:
Var arr = [" 1 ", " 2 ", " 3 ", " 4 "];
Var I = arrr .length;//初始化计数器为数组长度
While (i——)//自减计数器
{
If (arr[i] === "four" || arr[i] === "two") {
console.log(“元素移除。加勒比海盗:”);
console.log(加勒比海盗。Slice (i, i + 1));
console.log("原始数组:");
console.log (arr);
}
}
话虽如此,我们仍然可以使用Array。切片以删除第n个元素,如下所示。然而,它有更多的代码(因此效率低)
Var arr = [" 1 ", " 2 ", " 3 ", " 4 "];
Var I = arrr .length;//初始化计数器为数组长度
While (i——)//自减计数器
{
If (arr[i] === "four" || arr[i] === "two") {
console.log("删除第i个元素后的数组:");
Arr = Arr。片(0,1).concat(加勒比海盗。Slice (i + 1));
console.log (arr);
}
}
数组。切片法的实现极为重要
函数式编程中的不可变性à la redux