我有两个对象obj1
,obj2
如果 obj1 属性info
有键id
和code
,
如果键的数组对象info
与匹配,则将obj2 的 替换为 obj1。如果不匹配,则将其更改为obj1
code and id
obj2
nos
0
如果 id 和 code 与 javscript 中的另一个数组对象匹配,如何替换嵌套数组对象的数组对象中的值。
function newArray (obj1,obj2){
return obj2.map(e=>{
nos = obj1.filter(i=>i.info.some(x=>x.id === e.id && x.code === i.code)
return nos ? {...e, nos} : e;
})
}
var obj1 =[
{tot: 4, info: [{id:1, code:"x1",nos:2},{id:2, code:"x2",nos:2}] }
{tot: 2, info: [{id:3, code:"x3",nos:2},{id:5, code:"x5",nos:3}}]}
]
var obj2 = [
{id:1, code: "x1", nos:1, name:"sample1"},
{id:2, code: "x2", nos:2, name:"sample2"},
{id:3, code:"x3",nos:3, name:"sample3"},
{id:4, code: "x1", nos:0},
{id:5, code: "x5", nos:3, name:"sample5"},
]
预期输出:
[
{id:1, code: "x1", nos:2, name:"sample1"},
{id:2, code: "x2", nos:2, name:"sample2"},
{id:3, code:"x3",nos:2, name:"sample3"},
{id:4, code: "x1", nos:0},
{id:5, code:"x5",nos:3, name"sample5"}
]