猿问

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

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

慕婉清6462132
浏览 1527回答 1
1回答

POPMUISE

{    "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;
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答