为了账号安全,请及时绑定邮箱和手机立即绑定

从数组合并到对象后的 Javascript

从数组合并到对象后的 Javascript

猛跑小猪 2021-09-17 13:37:13
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;}, {});输出错误,如何分离number和string内部reduce?谢谢
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

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


const arrays = [

  [123, "string1"],

  [4564564, "string2"],

  [392341231, "string3"],

  [1665342, "String4", 334934543, "string5"]

];


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


查看完整回答
反对 回复 2021-09-17
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

你必须保持两个键和值。迭代每个子数组,将第二项(值)分配到第一项(键)处的累加器:


const arrays = [

  [123, "string1"],

  [4564564, "string2"],

  [392341231, "string3"],

  [1665342, "String4", 334934543, "string5"]

];


const obj = arrays.reduce((a, subarr) => {

  for (let i = 0; i < subarr.length; i += 2) {

    a[subarr[i]] = subarr[i + 1];

  }

  return a;

}, {});

console.log(obj);


查看完整回答
反对 回复 2021-09-17
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

你可以这样做:


const arrays = [

  [123, "string1"],

  [4564564, "string2"],

  [392341231, "string3"],

  [1665342, "String4", 334934543, "string5"]

];


const s = arrays.reduce((acc, val) => {

  let i = 0

  while (i < val.length) {

    acc[val[i]] = val[i + 1];

    i += 2

  }

  return acc;

},{});


console.log( s )


查看完整回答
反对 回复 2021-09-17
  • 3 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信