如何在JavaScript中合并嵌套对象内的ids数组?
合并对象中各Car对应的ids数组
原始输入结构
{ "Car1":{ "139":{ "count":3, "ids":[ "336", "347", "453" ] }, "140":{ "count":1, "ids":[ "338" ] } }, "Car2":{ "157":{ "count":1, "ids":[ "4449" ] } } }
期望输出结构
{ "Car1":{ "ids":[ "336", "347", "453", "338" ] }, "Car2":{ "ids":[ "4449" ] } }
实现函数
通过遍历对象的每个Car项,再遍历其下的所有子对象,将每个子对象的ids数组合并,最终构建目标结构:
function mergeCarIds(originalObj) { const result = {}; // 遍历每个Car属性 for (const carKey in originalObj) { if (originalObj.hasOwnProperty(carKey)) { const carData = originalObj[carKey]; const mergedIds = []; // 遍历当前Car下的所有子对象,收集ids for (const subKey in carData) { if (carData.hasOwnProperty(subKey)) { mergedIds.push(...carData[subKey].ids); } } result[carKey] = { ids: mergedIds }; } } return result; } // 测试示例 const input = { "Car1":{ "139":{ "count":3, "ids":["336","347","453"] }, "140":{ "count":1, "ids":["338"] } }, "Car2":{ "157":{ "count":1, "ids":["4449"] } } }; console.log(mergeCarIds(input));
代码说明
- 外层循环遍历每个Car节点,确保只处理对象自身属性;
- 内层循环遍历当前Car下的所有子对象,用扩展运算符
...将子对象的ids元素合并到统一数组; - 为每个Car生成仅包含合并后
ids的对象,存入结果对象。
内容的提问来源于stack exchange,提问作者user3057374
相关产品推荐
相关产品推荐

