javascript - 重新格式化对象数组

标签 javascript reactjs

我正在尝试重新格式化该对象数组:

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 循环遍历数组。使用reduceAttributes数组汇总为一个对象。

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/

相关文章:

JavaScript 从服务器获取文件

javascript - 在新数组项上附加 ajax 中的 PHP 数组项

php - 如何将 PHP 变量值赋给 Javascript 变量?

javascript - 保留将来使用的 HTML 的最佳方法

javascript - 如何测试用多个高阶组件包装的组件?

javascript - React css webkit 动画在 setState 后不起作用

javascript - 当组件离开页面时 react 整个页面可滚动

javascript - 在 Gatsby JS 中以编程方式创建页面时如何区分某些内容

reactjs - 如何使用 Hooks 过滤数组?

javascript - 在选择某些东西之前隐藏 d3.chart 的详细信息