如何提取嵌套数组中子数组的对象并生成新的一维对象数组
数组降维实现方案
可以实现,这是非常常见的单层嵌套数组降维需求,针对你给出的[[{id: 1}], [{id: 2}]]结构,以下是不同兼容场景下的实现方案:
1. 现代JS环境首选:Array.prototype.flat()
ES2019(ES10)新增的原生降维方法,默认仅展开1层嵌套,刚好适配你的场景:
const originArr = [[{id: 1}], [{id: 2}]]; const result = originArr.flat(); // 输出:[{id: 1}, {id: 2}]
如果后续遇到更深的嵌套,可以传入对应层级参数,比如flat(2)展开2层,flat(Infinity)展开任意深度的嵌套。
2. ES6+ 兼容方案:展开运算符 + concat()
如果你的运行环境不支持ES2019,可以用ES6的展开运算符配合数组合并方法实现:
const originArr = [[{id: 1}], [{id: 2}]]; const result = [].concat(...originArr); // 输出:[{id: 1}, {id: 2}]
3. ES5 全兼容方案:reduce() + concat()
需要兼容IE等老版本环境时,用ES5原生的reduce方法即可实现:
const originArr = [[{id: 1}], [{id: 2}]]; const result = originArr.reduce(function(acc, current) { return acc.concat(current); }, []); // 输出:[{id: 1}, {id: 2}]
内容的提问来源于stack exchange,提问作者David Roman A.
相关产品推荐
相关产品推荐

