热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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
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里大神许多,小弟就不在这里过量空话了。


推荐阅读
author-avatar
山海
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有