arrays - 比较和设置列表/数组中的对象的更好方法(前端角度 - 打字稿)?
问题描述
我知道这可行,但我也相信有更好的方法来做到这一点
所以我有两个具有不同对象的列表/数组,但有一个共同的属性。对于list1中的每个元素,我想在list2中找到元素并设置一个属性...
obj1 类型与 obj2 类型不同
for(let obj1 of this.list1) {
for(let obj2 of this.list2) {
if(obj1.fieldA == obj2.fieldB) {
obj1.fieldC = obj2.fieldD;
}
}
}
解决方案
创建一个 MapfieldB
作为键,fieldD
作为值。
迭代list1
,如果fieldA
在 Map 中找到,则在 中设置值fieldC
:
const map = new Map(this.list2.map(({ fieldB, fieldD }) => [fieldB, fieldD]));
for(const obj1 of this.list1) {
if(map.has(obj1.fieldA)) {
obj1.fieldC = map.get(obj1.fieldA);
}
}
推荐阅读
- c# - 使用 Method 的 Generic T 创建具有相同 Generic T 的另一个对象的新实例
- computer-vision - 面对本次识别案例推荐OCR软件
- heroku - 为什么我在执行 Heroku CLI 命令时会出现这些错误?
- python - 如何使用 json 将编码的音频字符串传递给字节?
- javascript - 如何在javascript中测试两个具有不同参数值的返回函数?
- kubernetes - 使用 VS Code Kubernetes Extension 连接到外部集群
- python - 如何让玩家在pygame中进入下一个级别
- java - 重置 JDeveloper 的管理员密码 - WebLogic 集成服务器
- angular - Angular Error Handler - 如何从错误中获取组件上下文?
- dialogflow-es - Google Action 应该播放广播流