84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
需求描述: 托盘码是箱码的父级,箱码是盒码的父级?问题:这样的级联列表,怎么写才能获取一个父级的子集有哪些?数据传过来是一个json串。谁能帮我看看,实在是想不通了!
ringa_lee
{ "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 处理个关系出来
palletCode
var map = proes.reduce((all, p) => { // 确保创建了一个数组 var list = all[p.palletCode] = all[p.palletCode] || []; list.push(p); return all; }, {});
现在你得到了一个 palletId -> [proOjbect] 这样一个 map,当你得到一个 palletId 之后就可以很容易取出来箱列表
palletId -> [proOjbect]
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;
如果箱是一个数组,那么可能是这样
把它对应的
palletCode
处理个关系出来现在你得到了一个
palletId -> [proOjbect]
这样一个 map,当你得到一个palletId
之后就可以很容易取出来箱列表后面
|| []
是处理没找到 list 的情况。至于从箱到盒,有个 "packCodeList" 都已经保存了。如果需要像上面那个通过映射表来取,也可以用类似的办法创建一个映射表,这个就简单一些
补充一下
如果你只需要编码列表