将二维数组转成对象,求解答?

let data = {
    list: [
          [1,2,3],
          [4,5,6],
          [7,8,9]
        ]
 };

现在需求将list中的数据的转成对象形式如下,list的长度不固定

let arr = [
    {list1:1,list2:4,list3:7},
    {list1:2,list2:5,list3:8},
    {list1:3,list2:6,list3:9}
]
阅读 1.9k
4 个回答
const arr = data.list[0].map((_, index) => {
  let obj = {};
  data.list.forEach((item, i) => {
    obj['list' + (i + 1)] = item[index];
  });
  return obj;
});

data.list.map((arr,i,list) => arr.reduce((res,n,j) => (res['list'+(j+1)] = list[j][i], res),{}))

function foo(list) {
    const result = []
    for (const [columnIndex, bar] of list.entries()) {
        for (const [rowIndex, cell] of bar.entries()) {
            const row = result[rowIndex] ?? ((x) => (result[rowIndex] = x, x))({})
            row[`list${columnIndex + 1}`] = cell;
        }
    }
    return result;
}
function transform(arr) {
    const ret = [];
    for (let i = 0; i < arr.length; ++i) {
        for (let j = 0; j < arr[i].length; ++j) {
            (ret[j] ??= {})["list" + (i + 1)] = arr[i][j];
        }
    }
    return ret;
}
console.log(transform(data.list));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题