首页 > 解决方案 > 无法从多维数组访问项目

问题描述

我正在尝试从下面的多维数组中获取 DishId,但我无法实现它。下面是代码细节。

count = 0;

for (j = 0; j < OrderDishes.length; j++) { 
    for (k = 0; k < OrderDishes[j].length; k++) {  
           
        dishId.push(OrderDishes[k].DishId);
        count = count + 1;
        if(count == OrderDishes[j].length){
            console.log(dishId);
            return res.json({
                success: 1
            });
        }
         
    } 

}

OrderDishes 低于 Array :

[ [ { DishId: 43,
      DishName: 'Kuchvi Biryani',
      Spicy: 2,
      UnitPrice: '6.99',
      Qty: 5,
      DishTotal: '34.95' } ],
      
  [ { DishId: 41,
      DishName: 'Dum Biryani',
      Spicy: 2,
      UnitPrice: '6.99',
      Qty: 5,
      DishTotal: '34.95' },
    { DishId: 42,
      DishName: 'Tysoon Biryani',
      Spicy: 2,
      UnitPrice: '6.99',
      Qty: 5,
      DishTotal: '34.95' } ] ]

当我跑步时,我得到 43 和 41 ,而不是我在寻找 43、41 和 42

标签: javascriptexpress

解决方案


由于计数条件,您只得到 43 和 41。你的外部数组的长度是 2。dishId 43 是一个数组,dish 41 和 42 在第二个数组中。一旦计数达到 2,它就会停止。

尝试将您的 count++ 和 if 条件移出内部循环。

const OrderDishes = [
  [{
    DishId: 43,
    DishName: 'Kuchvi Biryani',
    Spicy: 2,
    UnitPrice: '6.99',
    Qty: 5,
    DishTotal: '34.95'
  }],

  [{
      DishId: 41,
      DishName: 'Dum Biryani',
      Spicy: 2,
      UnitPrice: '6.99',
      Qty: 5,
      DishTotal: '34.95'
    },
    {
      DishId: 42,
      DishName: 'Tysoon Biryani',
      Spicy: 2,
      UnitPrice: '6.99',
      Qty: 5,
      DishTotal: '34.95'
    }
  ]
]

count = 0;
let dishId = []

for (j = 0; j < OrderDishes.length; j++) {
  for (k = 0; k < OrderDishes[j].length; k++) {
    dishId.push(OrderDishes[j][k].DishId);
  }
  count++;
  if (count === OrderDishes.length) {
    console.log('dishID: ', dishId);

  }
}


推荐阅读