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;
}
}