javascript - 遍历出数组中所有对象为id的值

查看:751
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆