You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用解构赋值从二维数组生成指定结构的对象

二维数组转成对键值对象的最简实现

这里提供几种简洁的实现方式,按需选择:

方法一:扁平化数组 + reduce(通用型)

不管子数组里有多少组键值对,这种方法都能适配:

const arr = [[1, 2, 3, 4], [5, 6, 7, 8]];
const obj = arr.flat().reduce((acc, curr, index, flatArr) => {
  // 偶数索引的元素作为键,下一个元素作为值
  if (index % 2 === 0) acc[curr] = flatArr[index + 1];
  return acc;
}, {});

方法二:解构赋值(结构固定时更直观)

如果你的子数组结构固定(每个子数组都是4个元素,分成两组键值),用解构赋值会很清晰:

const arr = [[1, 2, 3, 4], [5, 6, 7, 8]];
const obj = {};
// 直接解构每个子数组的四个元素
for (const [k1, v1, k2, v2] of arr) {
  obj[k1] = v1;
  obj[k2] = v2;
}

方法三:扁平化 + Object.fromEntries(一行极简写法)

利用Object.fromEntries接受键值对数组的特性,结合分组处理:

const arr = [[1, 2, 3, 4], [5, 6, 7, 8]];
const obj = Object.fromEntries(
  arr.flat().reduce((pairs, val, i) => {
    i % 2 ? pairs[pairs.length - 1].push(val) : pairs.push([val]);
    return pairs;
  }, [])
);

或者更易读的分组写法:

const flatArr = arr.flat();
const obj = Object.fromEntries(
  Array.from({ length: flatArr.length / 2 }, (_, i) => [flatArr[2*i], flatArr[2*i+1]])
);

内容的提问来源于stack exchange,提问作者flopinski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 06:36:12