Javascript 如何在数组对象的嵌套数组的条件上使用While循环?

Javascript 如何在数组对象的嵌套数组的条件上使用While循环?,javascript,arrays,typescript,Javascript,Arrays,Typescript,我有以下嵌套数组产品: 产品:[ [{ 变体:{ 变量_id:'1', 体重:15 }, 产品:{ _id:'1', _店铺编号:“1” }, 数量:5, 总价:600 }], [{ 变体:{ 变量_id:'2', 体重:20 }, 产品:{ _id:'2', _店铺编号:“2” }, 数量:4, 总价:500 }, { 变体:{ 变体_id:'5', 体重:25 }, 产品:{ _id:'3', _店铺编号:“2” }, 数量:3, 总价:400 } ] ]记住,您有一个数组。当您在外部数组

我有以下嵌套数组
产品

产品:[
[{
变体:{
变量_id:'1',
体重:15
},
产品:{
_id:'1',
_店铺编号:“1”
},
数量:5,
总价:600
}],
[{
变体:{
变量_id:'2',
体重:20
},
产品:{
_id:'2',
_店铺编号:“2”
},
数量:4,
总价:500
},
{
变体:{
变体_id:'5',
体重:25
},
产品:{
_id:'3',
_店铺编号:“2”
},
数量:3,
总价:400
}
]

]
记住,您有一个数组。当您在外部数组上调用
forEach
时,您将从单个商店获得一个内部产品数组。然后你必须以某种方式迭代内部数组。我建议使用
forEach
而不是
while
。以下是一些简单的测试:

export class CartComponent {

  someMethod() { 
    let packages: Package[] = [];
    let weight = 0;
    let finishPackage = () => {
      packages.push({ weight: weight });
      weight = 0;
    };

    products.forEach(sameShopProducts =>
      {
        sameShopProducts.forEach(prod => {
          if (weight + prod.Variant.weight > 30) {
            finishPackage();
          }
          weight += prod.Variant.weight;
        });
        // Different shops cannot share a package.
        finishPackage();
      });
    return packages;
  }

}