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 },
    ]
已解决 悬赏分:50 - 解决时间 2021-11-27 04:57
反对 0举报 0 收藏 0

回答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)
    // }, {});
    支持 0 反对 0 举报
    2021-11-26 08:29
  • @
    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 ] }
    支持 0 反对 0 举报
    2021-11-26 09:17