js数组怎样遍历一次,删除部份元素

常常做背景取数据,衬着到页面事情的前端童鞋能够都碰到过这类需求:那就是假如背景传给前端的数据要二次处置惩罚,一个数组,个中具有某种配合特性的元素是我们不需要的,必需要把它删撤除,这时刻怎么做呢。

罕见的思绪是:先用map要领遍历一次,或别的要领遍历,总之是把要去掉的元素改成undefined,然后再遍历新数组,把undefined的元素去掉。总之就是异常贫苦。
那末有无遍历一次就能够把没用的元素去掉的方法呢?
有的,以下:


var arr = [
{
    status:0
},{
    status:1
},{
    status:0
},{
    status:0
},{
    status:0
},{
    status:3
},{
    status:0
},{
    status:7
},{
    status:0
},{
    status:2
}];
            
console.log(arr);
            
for(var i=0,flag=true,len=arr.length;i<len;flag ? i++ : i){
        
   if( arr[i]&&arr[i].status==0 ){
        arr.splice(i,1);
        flag = false;
    } else {
        flag = true;
    }

}
console.log(arr);

只需要一个简朴的for轮回就搞定啦。

我在for轮回里设了个 flag 标志,并在背面的 i++ 位置做了推断,flag为true则加,为false则稳定。
如许就能够处理,splice要领删掉一个元素后,背面紧邻的元素不会被遍历到的题目。
特别注意,for轮回内里的 if 要先推断一下 arr[i] 的存在与否。

我现在测试的这类方法是没有破绽的,假如人人用的时刻发现有任何破绽的话,希望能复兴示知我一下,或许哪位大神有更好的完成这类需求的方法,贫苦在批评里写出来,人人一同讨论,配合进步!
深知sf里大神许多,小弟就不在这里过量空话了。

    原文作者:wfc_666
    原文地址: https://segmentfault.com/a/1190000006115447
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞