如何将含嵌套对象的对象数组转换为扁平对象数组
把嵌套数组对象扁平化的解决方案
嘿,这事儿好办!你需要把原数组中每个元素对象里的所有子对象提取出来,合并成一个一维数组对吧?这里有两种简洁的实现方式:
方法1:使用ES6+的flatMap(推荐)
这种写法最直观,一步到位:
var test = [ { t1: {a:1, b:2}, t2: {a:3, b:4} }, { t3: {a:5, b:6}, t4: {a:7, b:8} } ]; const transformedTest = test.flatMap(item => Object.values(item)); console.log(transformedTest); // 输出结果:[{a:1, b:2}, {a:3, b:4}, {a:5, b:6}, {a:7, b:8}]
逻辑说明:
Object.values(item):把原数组里的每个元素(比如{t1:..., t2:...})转换成它的所有值组成的数组,比如第一个元素会变成[{a:1,b:2}, {a:3,b:4}]。flatMap:先对数组每个元素做映射转换,然后自动把转换后的多维数组“拍平”成一维数组,完美匹配你的需求。
方法2:兼容性更好的map+concat写法
如果你的运行环境不支持ES6+的flatMap,可以用这个替代方案,效果完全一致:
var test = [ { t1: {a:1, b:2}, t2: {a:3, b:4} }, { t3: {a:5, b:6}, t4: {a:7, b:8} } ]; const transformedTest = [].concat(...test.map(item => Object.values(item))); console.log(transformedTest); // 同样得到目标数组
内容的提问来源于stack exchange,提问作者Francisr
相关产品推荐
相关产品推荐

