【问题标题】:Javascript: Convert Array into Object [duplicate]Javascript:将数组转换为对象
【发布时间】:2021-05-07 11:13:37
【问题描述】:

我有数组:

[
  ['a', 'b', 'c'],
  ['a', 'h', 'k'],
  ['c', 'd', 'e']
]

有没有最好的方法在这样的对象上转换它?

{
  a: [
       ['a', 'b', 'c'],
       ['a', 'h', 'k'],
     ],
  c: [
       ['c', 'd', 'e']
     ]
}

【问题讨论】:

标签: javascript arrays object


【解决方案1】:

您可以使用.reduce & Logical nullish assignment (??=) 来实现它

const arrays = [
  ['a', 'b', 'c'],
  ['a', 'h', 'k'],
  ['c', 'd', 'e']
];

const result = arrays.reduce((acc, curr) => {
  const key = curr[0];
  acc[key] ??= [];
  acc[key].push(curr);
  
  return acc;
}, {})

console.log(result);

【讨论】:

    【解决方案2】:

    您可以使用.reduce() 来获得所需的输出:

    const data = [
      ['a', 'b', 'c'],
      ['a', 'h', 'k'],
      ['c', 'd', 'e']
    ];
    
    const result = data.reduce((r, c) => {
      r[c[0]] = r[c[0]] || [];
      r[c[0]].push(c);
      return r;
    }, {});
    
    console.log(result);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

    • 您应该将c[0] 缓存到一个名为key 的单独变量中,以使您的代码不那么复杂并避免重复代码:) 如果我编辑它可以吗?先生
    • 另外,你可以让你的代码更简洁,比如从r[c[0]] = r[c[0]] || [];acc[key] ??= [];。如果您愿意,请查看下面的my answer。谢谢先生:)
    猜你喜欢
    • 2019-10-22
    • 1970-01-01
    • 2021-01-15
    • 2021-06-19
    • 2017-11-13
    • 2014-02-04
    • 2012-03-04
    • 2017-08-03
    相关资源
    最近更新 更多