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

JavaScript二维数组转对象,现有写法返回值不符合预期如何解决?

JavaScript二维数组转对象实现方案

原代码问题说明

你给出的代码存在两处明显逻辑缺陷:

  • forEach遍历过程中没有收集reduce的返回值,所有计算结果直接被丢弃
  • 函数内部没有定义存储最终结果的变量,无法明确返回值

原代码示例:

input = [[ 'Thundercats', '80s' ], [ 'The Powerpuff Girls', '90s' ], [ 'Sealab 2021', '00s' ]];

function objectify(array){
  
    array.forEach(el=>{
      el.reduce(function(result, item,index,array){
        result[index] = item;
        return result;
      }, {})    
  })
  
  return ??;
}

console.log(objectify(input))

修复后的实现方案

如果需求是将二维数组的每个子项第一个元素作为对象key,第二个元素作为对象value,可选择以下任意实现:

  1. forEach遍历实现
function objectify(array){
  const result = {}
  array.forEach(([key, value]) => {
    result[key] = value
  })
  return result
}
  1. reduce实现
function objectify(array){
  return array.reduce((acc, [key, value]) => {
    acc[key] = value
    return acc
  }, {})
}
  1. 单行最简实现(ES2019及以上版本支持)
    Object.fromEntries 是JS内置的专门用于将[key, value]格式的二维数组转换为对象的API,写法如下:
const obj = Object.fromEntries(input);

运行结果

所有上述实现调用objectify(input)后返回的结果统一为:

{
  Thundercats: '80s',
  'The Powerpuff Girls': '90s',
  'Sealab 2021': '00s'
}

内容的提问来源于stack exchange,提问作者A.Baes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:45:02