为了账号安全,请及时绑定邮箱和手机立即绑定

用js如何判断一个集合是另一个集合里面子集代码?

用js如何判断一个集合是另一个集合里面子集代码?

慕婉清6462132 2018-09-05 10:10:40
需求描述:托盘码是箱码的父级,箱码是盒码的父级?问题:这样的级联列表,怎么写才能获取一个父级的子集有哪些?数据传过来是一个json串。谁能帮我看看,实在是想不通了!
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

{    "proId": "22",    "proDate": "2016-08-12",    "packType": "2",    "proName": "33333",    "palletCode": "1214",    "packCodeList": [{        "packCode": "1213",        "boxCodeList": ["1111",            "1211"]
    }],    "batchId": "123"}

如果箱是一个数组,那么可能是这样

var proes = [
    {        "proId": "22",        "proDate": "2016-08-12",        "packType": "2",        "proName": "33333",        "palletCode": "1214",        "packCodeList": [{            "packCode": "1213",            "boxCodeList": ["1111",                "1211"]
        }],        "batchId": "123"
    },
    {        "proId": "23",        "proDate": "2016-08-12",        "packType": "2",        "proName": "444444",        "palletCode": "1214",        "packCodeList": [{            "packCode": "1213",            "boxCodeList": ["1111",                "1211"]
        }],        "batchId": "123"
    }
];

把它对应的 palletCode 处理个关系出来

var map = proes.reduce((all, p) => {    // 确保创建了一个数组
    var list = all[p.palletCode] = all[p.palletCode] || [];
    list.push(p);    return all;
}, {});

现在你得到了一个 palletId -> [proOjbect] 这样一个 map,当你得到一个 palletId 之后就可以很容易取出来箱列表

let palletId = getPalletId();let list = map[palletId] || [];

后面 || [] 是处理没找到 list 的情况。

至于从箱到盒,有个 "packCodeList" 都已经保存了。如果需要像上面那个通过映射表来取,也可以用类似的办法创建一个映射表,这个就简单一些

// proId -> proObject 映射var map2 = proes.reduce((all, p) => {
    all[p.proId] = p;
}, {});

补充一下

如果你只需要编码列表

var list = (map[palletId] || []).map(obj => obj.proId);var list2 = ((map2[proId] || {}).packCodeList || [])
    .map(obj => obj.packCode;


查看完整回答
反对 回复 2018-09-28
  • 1 回答
  • 0 关注
  • 1526 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信