首页 > 解决方案 > 从数组合并到对象后的Javascript

问题描述

const arrays = [
  [123, "string1"],
  [4564564, "string2"],
  [392341231, "string3"],
  [1665342, "String4", 334934543, "string5"]
];

const s = arrays.reduce((acc, val) => {
  return acc.concat(val);
});

// output: 
// [123, "string1", 4564564, "string2", 392341231, "string3", 1665342, "String4", 334934543, "string5"]

展平阵列后,输出是number一个string,我试图用它reduce来制作一个像

{
123: "string1",
4564564: "string2",
392341231: "string3",
1665342:  "String4",
334934543: "string5"
}
.reduce(function(acc, cur, i) {
  acc[cur] = cur;
  return acc;
}, {});

输出错误,如何分离numberstring内部reduce?谢谢

标签: javascript

解决方案


您可以通过映射各个索引并将它们全部分配给一个新对象来轻松地做到这一点,这将减少您对中间步骤的需求

const arrays = [
  [123, "string1"],
  [4564564, "string2"],
  [392341231, "string3"],
  [1665342, "String4", 334934543, "string5"]
];

console.log( Object.assign( {}, ...arrays.map( i => ({[i[0]]: i[1] }) ) ) );


推荐阅读