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

如何将二维数组转为含真实键值对的对象数组?JS问题求助

问题解决方法

你的问题出在separateObject函数的对象创建环节——你写的{ keys : obj[key] }会把字符串"keys"作为固定键名,而非使用循环中的key变量作为动态键名。

修复后的代码

只需要把对象里的keys改成[key](ES6计算属性名语法)即可:

var array = [["white", "goodness"], ["green", "grass"]];

var obj={};
for (var i=0; i<array.length;i++){
  for (var z=0; z < 1; z++){
    obj[array[i][z]] = array[i][z+1];
  }
}

const separateObject = obj => {
  const res = [];
  const keys = Object.keys(obj);
  keys.forEach(key => {
     res.push({
       [key]: obj[key] // 用[key]替代固定字符串keys
     });
  });
  return res;
};
console.log(separateObject(obj));
// 输出: [{white: "goodness"}, {green: "grass"}]

更简洁的优化写法

完全可以跳过中间转成大对象的步骤,直接遍历原二维数组生成目标数组,代码更高效简洁:

var array = [["white", "goodness"], ["green", "grass"]];

const result = array.map(([key, value]) => ({ [key]: value }));
console.log(result);
// 输出: [{white: "goodness"}, {green: "grass"}]

这里用map遍历原数组,解构每个子数组的key和value,再通过计算属性名生成对应对象,一步完成转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:05:22