javascript - 遍历出数组中所有对象为id的值
本文介绍了javascript - 遍历出数组中所有对象为id的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
const lists=[
{
_list_name:'订单中心',_list:[
{name:'门店补货审核',
_listThird:[
{name:'补货汇总审核',url:'add_goods_all_check.html',className:'allcheck'},
{name:'补货特殊审核',url:'add_goods_special_check.html',className:'specialcheck'},
{name:'已审核补货单查询',url:'add_goods_has_check.html',className:'hascheck'}
],id:'store_check'
},
{name:'加配作业',
_listThird:[
{name:'加配计划',url:'add_goods_plan.html',className:'plan'}
],id:'add_work'
},
{name:'物流仓库补货',
_listThird:[
{name:'DC补货',url:'add_goods_dc.html',className:'dc'}
],id:'store_add'
}
],id:'order_center'
},{
_list_name:'补货中心',_list:[
{name:'交易前',
_listThird:[
{name:'智能补货',url:'add_goods_smart.html',className:''},
{name:'手工补货',url:'add_goods_hand.html',className:''},
{name:'特殊补货',url:'add_goods_special.html',className:''},
{name:'补货单查询',url:'add_goods_secrch.html',className:''}
],id:'order_before'
},
{name:'交易中',
_listThird:[
{name:'加配单查询',url:'add_goods_query.html',className:''}
],id:'order_ing'
},
{name:'交易后',
_listThird:[
{name:'补货单明细跟踪',url:'add_goods_detail_track.html',className:''}
],id:"order_after"
}
],id:'add_goods_center'
}]
便利出所有的id,将id对应的value值设为0;
结果这样
var json={
'order_center':0,
'store_check':0,
'add_work':0,
'store_add':0,
'order_before':0,
'order_ing':0,
'order_after':0,
'add_goods_center':0
}
解决方案
贴一种更快捷的方式,就是把原来的json数组串行化,然后通过正则去匹配,再从捕获组中去提取,要注意的是:如果用JSON.stringify(lists)
串行化后,原来的id就会被双引号包裹,值也从单引号包裹变成双引号;还有就是正则表达式一定要加g
这个修正符,这样才能让exec一直匹配下去
var listsStr=JSON.stringify(lists);
var pattern=/,"id":"([^"]+)"/g;
var matchStr;
var json={};
while(matchStr=pattern.exec(listsStr)){
// console.log(matchStr[1]);
json[matchStr[1]]=0;
}
console.log(json);
这篇关于javascript - 遍历出数组中所有对象为id的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文