这个帖子已经有很多很棒的回答了。 但是,当我试图在ES5上下文中解决“从数组中删除第n个元素”时,我想分享我的经验。
JavaScript数组具有不同的从开头或结尾添加/删除元素的方法。 这些如下。
ARR.push(ele )- To add element(s ) s ) at the end of the array
ARR.unshift(ele )- To add element(s ) s ) at the beginning of the array
arr.pop (-toremovelastelementfromthearray
arr.shift (-toremovefirstelementfromthearray
基本上,上述方法不能直接用于从数组中删除第n个元素。
值得注意的是,与使用java迭代器相反,可以在迭代过程中删除集合的第n个元素。
基本上,它只保留一个数组方法Array.splice,用于执行第n个元素的删除。 (这些方法可以是其他方法,但在此问题的上下文中集中于删除元素。 )
Array.splice(index,1 )- removes the element at the index
这是从原始回答中复制的代码。 带注释:
var arr=['one '、' two '、' three '、' four'];
var i=arr.length; //initializecountertoarraylength
while (I----//decrementcounterelseitwouldrunintoindexoutboundsexception
{
if (arr [ I ]===' four '|arr [ I ]===' two ' () ) )
//splicemodifiestheoriginalarray
ARR.splice(I,1; //neverrunsintoindexoutboundsexception
控制台. log (element removed.arr : );
} else {
console.log (elementnotremoved.arr : );
}
控制台. log (arr;
}
另一个值得注意的方法是Array.slice。 但是,该方法的返回类型是删除的元素。 这也不会修改原始数组。 修改后的代码段如下:
var arr=['one '、' two '、' three '、' four'];
var i=arr.length; //initializecountertoarraylength
while(I----//decrementcounter
{
if (arr [ I ]===' four '|arr [ I ]===' two ' () ) )
控制台. log (element removed.arr : );
控制台. log (arr.slice (I,i 1);
控制台. log (original array : );
控制台. log (arr;
}
}
不过,也可以使用Array.slice删除第n个元素,如下所示: 这是因为可以观察到它是更多的代码。 因此,效率低下。
var arr=['one '、' two '、' three '、' four'];
var i=arr.length; //initializecountertoarraylength
while(I----//decrementcounter
{
if (arr [ I ]===' four '|arr [ I ]===' two ' () ) )
控制台. log (arrayafterremovalofithelement : );
ARR=ARR.Slice(0,I ).concat (arr.slice ) I1 );
控制台. log (arr;
}
}
为了在redux函数式编程中实现不变性,Array.slice方法非常重要