Rom*_*llc 0 javascript arrays object
我有2个objets a并b定义如下:
a = {
1:3,
2:5,
3:1,
}
b = {
1:{name:"Bob"},
2:{name:"John"},
3:{name:"Alice"}
}
Run Code Online (Sandbox Code Playgroud)
我想要得到的是以下对象c定义为
c = {
"Bob":3,
"John":5,
"Alice":1
}
Run Code Online (Sandbox Code Playgroud)
因此,使用b [key] .name作为c [key]和[key]作为值.
到目前为止我尝试过的是
const mapAandB = (a, b) => {
let finalObject = [];
Object.keys(b).forEach(key => {
return finalOdds.push({ [b[key].name]: a[key] });
});
return finalOdds;
};
Run Code Online (Sandbox Code Playgroud)
但结果却是
c = [
0:{Bob:3},
1:{John: 5},
2:{Alice:1}
]
Run Code Online (Sandbox Code Playgroud)
如果您有任何建议......
您可以使用Array#reduce将名称和值收集到对象中:
const a = {"1":3,"2":5,"3":1}
const b = {"1":{"name":"Bob"},"2":{"name":"John"},"3":{"name":"Alice"}}
const result = Object.keys(a).reduce((r, key) => {
r[b[key].name] = a[key];
return r;
}, {});
console.log(result);Run Code Online (Sandbox Code Playgroud)
或者您可以使用Array#map创建一系列对象,并使用Object#assign和spread将它们组合成一个对象:
const a = {"1":3,"2":5,"3":1}
const b = {"1":{"name":"Bob"},"2":{"name":"John"},"3":{"name":"Alice"}}
const result = Object.assign(...Object.keys(a).map((key) => ({ [b[key].name]: a[key] })));
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |