JavaScript如何移除嵌套数组中每个对象外层的包裹数组
实现方案
你需要的是将嵌套深度为1的二维数组扁平化为一维数组,以下是几种可行的实现方式:
方案1:使用ES2019 flat() 方法(推荐)
该方法是原生内置的数组扁平化API,默认扁平化深度为1,刚好适配你的场景:
// 原始API返回数据 const apiResponse = [ [ { fullname: 'Abc', email: 'xyz@gmail.com', phone: '03000000000', }, ], [ { fullname: 'edf', email: 'edf@gmail.com', phone: '03000000000', }, ], ] const flattenedResult = apiResponse.flat()
如果后续嵌套层级变更,可以传参数指定深度,传Infinity可扁平化所有层级:
const flattenedResult = apiResponse.flat(Infinity)
方案2:低版本环境兼容方案
如果运行环境不支持ES2019,可以用以下两种替代实现:
- 展开运算符 +
concat
const flattenedResult = [].concat(...apiResponse)
reduce遍历实现
const flattenedResult = apiResponse.reduce((acc, current) => acc.concat(current), [])
方案3:固定场景高性能实现
如果你确定所有子数组都只会包含1个对象元素,可以直接取子数组的第一个元素,性能最优:
const flattenedResult = apiResponse.map(item => item[0])
内容的提问来源于stack exchange,提问作者Wahas Ali Mughal
相关产品推荐
相关产品推荐

