需求描述:托盘码是箱码的父级,箱码是盒码的父级?问题:这样的级联列表,怎么写才能获取一个父级的子集有哪些?数据传过来是一个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;
添加回答
举报
0/150
提交
取消