遍历多维数组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
相关产品推荐
相关产品推荐

