常常做背景取数据,衬着到页面事情的前端童鞋能够都碰到过这类需求:那就是假如背景传给前端的数据要二次处置惩罚,一个数组,个中具有某种配合特性的元素是我们不需要的,必需要把它删撤除,这时刻怎么做呢。
罕见的思绪是:先用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里大神许多,小弟就不在这里过量空话了。