如何将对象中多组数组类型的值合并为单个数组?
合并对象中所有数组元素为单一数组
给定如下键值对格式的对象holiday_expenses,其中每个键对应的值都是数组,需要将所有数组中的元素合并成一个单独的数组。
代码示例
const holiday_expenses = { food: [{name: "abc", place: "xyz"}], travel: [{name: "abcd", place: "xyz1"}], accommodation: [{name: "xysz", place: "xyz2"}] }
预期结果
result: [{name: "abc", place: "xyz"}, {name: "abcd", place: "xyz1"}, {name: "xysz", place: "xyz2"}]
方案1:使用Object.values() + flat()
这是最简洁的实现方式,先用Object.values()提取对象所有值组成的数组,再通过flat()将嵌套的单层数组直接扁平化。
const result = Object.values(holiday_expenses).flat(); console.log(result);
方案2:使用reduce()遍历合并
如果需要兼容不支持flat()的旧运行环境,可以用Array.reduce()逐个合并数组:
const result = Object.values(holiday_expenses).reduce((acc, curr) => acc.concat(curr), []); console.log(result);
解释:reduce()会遍历每个子数组,用concat()把当前数组的元素追加到累加器数组acc中,初始值设为空数组[],最终得到合并后的完整数组。
内容的提问来源于stack exchange,提问作者Siva Sai
相关产品推荐
相关产品推荐

