Sra*_*ani 1 javascript arrays typescript
我有两个这样的数组
let array1 = [{
'id': 1,
'name': 'A'
}, {
'id': 2,
'name': 'B'
}, {
'id': 3,
'name': 'C'
}]
let array2 = [{
'id': 1,
'name': 'x'
}, {
'id': 2,
'name': 'y'
}]
Run Code Online (Sandbox Code Playgroud)
我想用基于 id 值匹配的数组 2 对象值更新数组 1。结果会是这样的。
[{
'id': 1,
'name': 'x'
}, {
'id': 2,
'name': 'y'
}, {
'id': 3,
'name': 'C'
}]
Run Code Online (Sandbox Code Playgroud)
我写过类似的东西但不起作用。
array1.forEach(item1 => {
const itemFromArr2 = array2.find(item2 => item2.id== item1.id);
if (itemFromArr2) {
item1= itemFromArr2;
}
}
)
Run Code Online (Sandbox Code Playgroud)
请建议我如何做到这一点。
您可能想检查一下这一行:
array1.map(e => (e.name = array2.find(a => a.id == e.id)?.name || e.name, e));
Run Code Online (Sandbox Code Playgroud)
解释:我们正在映射array1并在array2中搜索匹配的 id ,如果找到(array2.find(a => a.id == e.id)?.name),我们覆盖名称属性(e.name = ...),否则我们保持原样(... || e.name)。
小例子:
array1.map(e => (e.name = array2.find(a => a.id == e.id)?.name || e.name, e));
Run Code Online (Sandbox Code Playgroud)
根据@Roster的评论进行编辑,如果你想覆盖整个条目,请使用这一行:
array1.map(e => (e = array2.find(a => a.id == e.id) || e, e));
Run Code Online (Sandbox Code Playgroud)
第二个例子:
let array1 = [{
'id': 1,
'name': 'A'
}, {
'id': 2,
'name': 'B'
}, {
'id': 3,
'name': 'C'
}]
let array2 = [{
'id': 1,
'name': 'x'
}, {
'id': 2,
'name': 'y'
}]
const newarray = array1.map(e => (e.name = array2.find(a => a.id == e.id)?.name || e.name, e));
console.log(newarray);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
984 次 |
| 最近记录: |