JavaScript怎么把一个数组里面的多个对象转为一个数组?

如何对一个数组里面的多个对象里的某个属性名,然后根据某个属性名获取属性值,就把属性值加入到一个数组里面?

我想要下面的案例如下:

{
    "data":[
        {
            "name":[
                "00",
                "01",
                "02",
                "03"
            ],
            "age":[
                "20",
                "30",
                "25",
                "28"
            ]
        }
    ]
}

处理之前代码如下:

var arr = [
        { name: '00', age: 20 },
        { name: '01', age: 30 },
        { name: '02', age: 25 },
        { name: '03', age: 28 },
    ]
阅读 4k
2 个回答
var arr = [
    { name: '00', age: 20 },
    { name: '01', age: 30 },
    { name: '02', age: 25 },
    { name: '03', age: 28 },
]

var res = arr.reduce((res,v) => {
    Object.keys(v).forEach(key => {
        const value = v[key];
        if(res[key]) res[key].push(value);
        else res[key] = [value];
    })
    return res;
}, {});

// 等同
// var res = arr.reduce((res,v) => {
//     return Object.keys(v).reduce((res,key) => {
//         const value = v[key];
//         if(res[key]) res[key].push(value);
//         else res[key] = [value];
//         return res;
//     }, res)
// }, {});
var o = {}
arr.map( obj => {
    for (let [k, v] of Object.entries(obj)) {
        o[k] = o[k] || []
        o[k].push(v)
    }
})
console.log(o)

输出

{ name: [ '00', '01', '02', '03' ], age: [ 20, 30, 25, 28 ] }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题