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

如何将JavaScript对象数组归约为含唯一属性的单个对象?

问题分析与解决

你的代码出错的核心原因是误用了item.key和item.value——数组里的每个item是包含多个属性的独立对象(比如{"a": false}),并非带有key和value字段的结构,这两个值自然都是undefined,最终生成了{ "undefined": undefined }的错误结果。

要将对象数组归约为包含唯一属性的单个对象,只需在reduce过程中直接合并每个对象的属性到累加器即可,你的示例中所有相同属性的值完全一致,重复赋值不会影响最终结果。

正确代码示例

方法一:使用Object.assign

const input = 
  [ { "a": false} 
  , { "b": false, "c": true } 
  , { "b": false, "c": true } 
  , { "a": false } 
  , { "b": false, "c": true } 
  , { "b": false, "c": true } 
  , { "b": false, "c": true, "b": false } 
  ] 

const object = input.reduce((obj, item) => Object.assign(obj, item), {});

console.log(object); // 输出: {"a":false,"b":false,"c":true}

方法二:使用展开运算符(更简洁)

const object = input.reduce((obj, item) => ({ ...obj, ...item }), {});

这两种方式都会将数组中每个对象的属性依次合并到累加对象中,重复属性会被后续同属性覆盖(你的示例中同属性值一致,最终结果完全符合预期)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:05:22