js 对象如何 行转成列

[{a:1,b:2,c:3},{a:4,b:5,c:6}]

如何转成 竖列

[
    [a,1,4],
    [b,2,5]
    [c,3,6]
]
阅读 3.6k
5 个回答
var a = [{a:1,b:2,c:3},{a:4,b:5,c:6}]
Object.keys(a[0]).map(l => [l, ...a.map(e => e[l])])
var source = [{a:1,b:2,c:3},{a:4,b:5,c:6}]
var target = []
var store = {}

for (var i = 0; i < source.length; i++) {
    var obj = source[i]
    for (var key in obj) {
        if (store[key]) {
            store[key].push(obj[key])
        } else {
            store[key] = [obj[key]]
        }
    }
}

for (var k in store) {
    store[k].unshift(k)
    target.push(store[k])
}

console.log(target)
    for (var key1 in res[0]) {
        for (var key2 in res[1]) {
            if (key1 == key2) {
                arr.push([key1, res[0][key1], res[1][key2]])
            }
        }
    }

先存成

map = {
      a: [1,4],
      b: [2,5]  
     }
 再转化
function transform(list) {
    const map = {};
    list.forEach(item => {
        Object.keys(item).forEach(key => {
            if (!map[key]) {
                map[key] = [];
            }
            map[key].push(item[key]);
        })
    });
    return Object.keys(map).map(key => [key, ...map[key]]);
}

亲测有效 希望给个赞

Object.values(
  [{a:1,b:2,c:3},{a:4,b:5,c:6}].reduce((pre, cur) => {
    const obj = {}
    Object.keys(cur).forEach(curKey => {
      if (pre[curKey]) {
        obj[curKey] = Array.isArray(pre[curKey]) ? pre[curKey].push(cur[curKey]) : [curKey, pre[curKey], cur[curKey]]
      } else {
        obj[curKey] = Array.isArray(cur[curKey]) ? cur[curKey] : [curKey, cur[curKey]]
      }
    })
    return obj
  })
)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题