【发布时间】:2018-11-11 00:58:33
【问题描述】:
我有 2 个具有不同组合键的不同类型的对象数组。 如何为以下代码执行有效的匹配和对象更新?我尝试了与 .filter 的不同组合,但还没有成功。 我正在根据 selectionList 更新临时 masterList。
for (let selObj of selctionList) {
for (let obj of masterList) {
if (selObj['n'] == obj['name']) {
obj['checked'] = true;
obj['cost'] = selObj['r'];
obj['qty'] = (selObj['q'] ? selObj['q'] : 1);
break;
}
}
}
for (let obj of masterList) {
if (!obj['checked']) {
obj['checked'] = false;
}
}
样本数据
`masterList =
[{"id":459,"cost":250,"name":"Coke"},
{"id":460,"cost":60,"name":"Cookies"},
{"id":461,"cost":100,"name":"Pizza"},
{"id":462,"cost":250,"name":"Bread"},
{"id":463,"cost":150,"name":"Sausage"},
{"id":464,"cost":150,"name":"Juice"}];
selectionList = [{"q":1,"r":350,"n":"Coke"}
{"q":2,"r":550,"n":"Bread"}]`
输出:
`[{"id":459,"cost":350,"name":"Coke", "checked" : true,"qty":1},
{"id":460,"cost":60,"name":"Cookies","checked" : false},
{"id":461,"cost":100,"name":"Pizza","checked" : false},
{"id":462,"cost":550,"name":"Bread","checked" : true,"qty":2},
{"id":463,"cost":150,"name":"Sausage","checked" : false},
{"id":464,"cost":150,"name":"Juice","checked" : false}]`
【问题讨论】:
-
您应该添加示例数据和预期结果。
-
请添加selctionList和masterList数据
-
如果 false 设置为 false ...?最后的检查和更新没有意义(如果它有一个布尔值)。
-
我相信 Anup 的意思是如果不存在“已检查”键,则设置为 false
-
@OriDrori 添加了示例数据和预期输出
标签: javascript performance typescript ecmascript-6 filtering