如何内联合并两个对象数组中relevantRegisters.R的嵌套对象数组?
如何将两个数组中嵌套的R数组合并为一维数组
你现在的代码之所以得到二维数组[Array(3), Array(3)],是因为map会把每个pallet/gripper转换成对应的R数组,展开后自然是嵌套结构。下面给你两种简单的解决方法:
方法1:用flatMap一步到位(推荐)
flatMap相当于map + flat(1)的组合,能在映射每个元素的同时自动扁平化一层嵌套,完美适配你的场景:
const extractedR = [ ...pallets.flatMap(pallet => pallet.relevantRegisters.R), ...grippers.flatMap(gripper => gripper.relevantRegisters.R) ];
方法2:先映射再手动扁平化
如果你更习惯分步操作,也可以先保留你原来的map逻辑,最后用flat()把二维数组拍平成一维:
const extractedR = [ ...pallets.map(pallet => pallet.relevantRegisters.R), ...grippers.map(gripper => gripper.relevantRegisters.R) ].flat();
flat()默认会处理一层嵌套,刚好能把你得到的[Array(3), Array(3)]转换成一维数组。
举个实际的例子验证下效果:
假设你的原始数组结构是这样的:
const pallets = [ { relevantRegisters: { R: [{ID: 1}, {ID: 2}, {ID: 3}] } }, { relevantRegisters: { R: [{ID: 4}, {ID: 5}, {ID: 6}] } } ]; const grippers = [ { relevantRegisters: { R: [{ID: 7}, {ID: 8}, {ID: 9}] } } ];
用上面任意一种方法,最终得到的extractedR都会是:
[{ID:1}, {ID:2}, {ID:3}, {ID:4}, {ID:5}, {ID:6}, {ID:7}, {ID:8}, {ID:9}]
完全符合你想要的一维对象数组需求。
内容的提问来源于stack exchange,提问作者Darkbound
相关产品推荐
相关产品推荐

