Javascript如何将外层对象的status键值对添加到嵌套menues数组子项中
实现方案
核心思路:
- 遍历原始数组的每个订单外层对象
- 取出当前订单的
status值,注入到该订单关联的menues数组的每一个子对象中 - 可按需选择是否删除外层的
status属性
方案1:原地修改原数据(性能更高,适合不需要保留原始数据的场景)
直接修改原始响应数据,无额外内存开销:
// 你的原始JSON响应数据 const rawData = [ { "id": 1, "status": "pending", "menues": [ { "title": "Coke", "price": "200" } ] }, { "id": 2, "status": "delivered", "menues": [ { "title": "Pepsi", "price": "120" } ] } ]; rawData.forEach(order => { const currentStatus = order.status; // 给当前订单的所有菜单项添加status属性 order.menues.forEach(menu => { menu.status = currentStatus; }); // 删除外层的status属性,不需要可注释这行 delete order.status; }); // rawData即为处理完成的目标数据 console.log(rawData);
方案2:返回全新数组(不修改原数据,适合状态不可变场景)
所有对象全新生成,原始数据完全不受影响,适配React/Vue等框架的状态更新规则:
const rawData = [/* 同上原始数据 */]; const processedData = rawData.map(order => { // 解构分离外层status和其他属性 const { status, ...restOrderInfo } = order; // 生成新的menues数组,每个项追加status const newMenues = order.menues.map(menu => ({ ...menu, status })); // 返回全新的订单对象 return { ...restOrderInfo, menues: newMenues }; }); // processedData即为处理完成的目标数据 console.log(processedData);
内容的提问来源于stack exchange,提问作者Usama Liaqat
相关产品推荐
相关产品推荐

