js匹配数组中对应的值_JS 数组中查找符合条件的数据索引

日常工作中经常会需要我们前端获取后端为我们传递的数据放在页面中渲染的问题。大批量的数据后端会根据具体的情况来放在数组中传递给我们,但是如果遇到数组中有需要特殊需要处理的数据怎么办?原来100个数据,渲染规则完全一致,这个时候我们用一个循环就可以搞定,但是有的时候需求并不会这样simple,也有100个数据中有任意个不定位置的特殊元素需要特殊处理,这个时候我们需要找一下解决办法:

1.首先将特殊的元素剔除掉,把剩余可以简单循环渲染的数据重新组成数组,首先进行第一步的渲染。这个时候我们可以用到的方法:

1 //将数组中为1的数据删除生成新数组

2 let simpleArr = list.filter((item, i) =>{3 return item != 1;4 })

如上代码所示,simpleArr为新数组,list为原始数组。

2.其次我们可以根据具体的需求来把特殊元素找出来,继续渲染页面。

以我最近遇到的需求情况为例,渲染10张图片,要求其中ID为1的图片要根据图片出现的位置对应的item值来进行划分渲染,其他的图片只需根据ID来展示图片即可。

根据第一步,其他ID不为1的图片我可以轻松渲染出来,那么ID为1的图片的位置我可以根据如下方法进行get出来:

//在数组中查找所有出现的x,并返回一个包含匹配索引的数组

functionfindall(a,x){var results=[],

len=a.length,

pos=0;while(pos

pos=a.indexOf(x,pos);if(pos===-1){//未找到就退出循环完成搜索

break;

}

results.push(pos);//找到就存储索引

pos+=1;//并从下个位置开始搜索

}returnresults;

}

再根据这个信息去寻找该ID值对应的item是多少进行渲染就OK了;

Tips:统一渲染用Jquery 中的.html()即可,分块渲染统一展示要使用.append()等方法渲染,因为.html()是将标签内元素覆盖式渲染。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值