我正在尝试重新格式化该对象数组:
let users = [{
Username: "test1",
Attributes: [{
Name: "sub",
Value: "1234"
}, {
Name: "email",
Value: "test1@gmail.com"
}]
},
{
Username: "test2",
Attributes: [{
Name: "sub",
Value: "5678"
}, {
Name: "email",
Value: "test2@gmail.com"
}]
},
]
我想重新格式化为:
users: [{
Username: "test1",
sub: "1234",
email: "test1@gmail.com}, {
Username: "test2",
sub: "5678",
email: "test2@gmail.com}]
如何重新格式化该对象数组?谢谢
最佳答案
您可以使用map
循环遍历数组。使用reduce
将Attributes
数组汇总为一个对象。
let users = [{"Username":"test1","Attributes":[{"Name":"sub","Value":"1234"},{"Name":"email","Value":"test1@gmail.com"}]},{"Username":"test2","Attributes":[{"Name":"sub","Value":"5678"},{"Name":"email","Value":"test2@gmail.com"}]}]
let result = users.map(({Username,Attributes}) => {
let a = Attributes.reduce((c, v) => ({ ...c,[v.Name]: v.Value}), {});
a.Username = Username;
return a;
});
console.log(result);
较短版本:
let result = users.map(({Username, Attributes})=>({Username,...Attributes.reduce((c,v)=> ({...c, [v.Name]: v.Value}) ,{})}));
关于javascript - 重新格式化对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56267697/