You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

遍历多维数组OrderDishes无法获取全部DishId问题求助

代码问题分析与修复方案

现存问题

  • 二维数组索引访问错误:要获取外层第j个子数组内第k个菜品的DishId,正确语法是OrderDishes[j][k].DishId,原有代码写为OrderDishes[k].DishId,索引错位导致取值逻辑错误。
  • 循环内提前终止:你在内层循环中增加了计数匹配就return的逻辑,当遍历到第二个子数组的第1个元素(DishId=41)时,累计计数刚好等于第二个子数组的长度2,直接触发返回,不会继续遍历第二个子数组的第二个元素(DishId=42),就是你缺值的直接原因。
  • 计数逻辑冗余:不需要手动维护count变量判断遍历是否完成,等两层循环全部执行结束再处理返回即可。

修复代码

基于原有for循环逻辑修改

// 初始化存储数组
const dishId = []
for (let j = 0; j < OrderDishes.length; j++) { 
    for (let k = 0; k < OrderDishes[j].length; k++) {  
        // 修正索引取值
        dishId.push(OrderDishes[j][k].DishId);
    } 
}
// 循环全部结束后再处理输出和返回
console.log(dishId); // 输出 [43,41,42]
return res.json({
    success: 1
});

更简洁的现代JS写法

用flatMap可以直接平铺二维数组并提取目标字段:

const dishId = OrderDishes.flatMap(group => group.map(item => item.DishId))
console.log(dishId)
return res.json({ success:1 })

内容的提问来源于stack exchange,提问作者aak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:06:03