如何将对象组成的二维数组转换为单个平面对象?
将二维对象数组转换为平面对象的实现方法
输入数据
const data = [ [{ a: "a" }, { b: "b" }, { c: "c" }], [{ d: "d" }, { e: "e" }, { f: "f" }], [{ g: "g" }, { h: "h" }, { i: "i" }], ];
期望输出
const result = { a: "a", b: "b", c: "c", d: "d", e: "e", f: "f", g: "g", h: "h", i: "i", };
实现方法
方法1:扁平化数组后合并对象
先通过flat()将二维数组转为一维数组,再用Object.assign()合并所有对象:
const result = Object.assign({}, ...data.flat());
方法2:嵌套reduce()遍历合并
通过两层reduce遍历数组,逐步将子数组中的对象合并到初始空对象中:
const result = data.reduce((total, subArray) => { return subArray.reduce((acc, obj) => ({ ...acc, ...obj }), total); }, {});
方法3:flatMap()结合展开语法
用flatMap()扁平化数组,再通过展开语法合并对象:
const result = Object.assign({}, ...data.flatMap(item => item));
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

