首页 > 解决方案 > 将数组数组展开为对象数组

问题描述

我有一个数组数组,我需要将每个嵌套数组中的第一个成员变成一个键,然后从其余数组中创建一个对象数组。第一个之后的每个奇数成员都是键,偶数成员是值。

请参阅示例:请注意,原始嵌套数组始终具有奇数或成员(甚至在您删除第一个成员以使其成为新键之后)

//ORIGINAL
    var arr = [
     [first, a, b, c, d],[second, e, f, g, h, i, j],[third,...]
    ]

// DESIRED RESULT
    var obj = [
     {first: [{a:b}, {c:d}]},
     {second: [{e:f}, {g:h}, {i:j}]},
     {third: ...}
    ]

标签: javascript

解决方案


使用array.map和 ES6 解构和休息运算符和动态对象键:

var arr = [
  ["first", "a", "b", "c", "d"],["second", "e", "f", "g", "h", "i", "j"],["third"]
]

var obj = arr.map(([key, ...rest]) => {
  let res = { [key]: [] }
  for(let i = 0; i < rest.length; i+=2)
    res[key].push({ [rest[i]]: rest[i+1] });
  return res;
});

console.log(obj);


推荐阅读