如何将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
相关产品推荐
相关产品推荐

