【发布时间】:2019-06-13 06:08:46
【问题描述】:
我正在从事一个涉及二维对象数组的项目。我一直在努力尝试找出这个答案一段时间,我对如何解决它有一些想法,但我有点难过。
假设City A 有动物收容所,每个收容所可以容纳 50 只动物。动物从该州的不同地方进来,但一个地方的动物数量永远不会超过 50 只。这是动物进来的一个例子。
let animal_shelter_capacity =< 50;
let array 1 = [
{ "region": "NE", quantity: 25 },
{ "region": "NW", quantity: 21 },
{ "region": "SE", quantity: 43 },
{ "region": "SW", quantity: 18 },
{ "region": "Central", quantity: 20}
]
在此示例中,来自NE (25) 和 NW (21) 的动物将前往一个收容所(总共 46 只动物),来自 SE (43) 的动物将前往另一个收容所 (总共 43 只动物),来自SW (18) 和 Central (20) 的动物将前往第三个收容所(总共 38 只动物)。一个收容所里的动物数量永远不能超过 50 只。
所以,我需要生成一个如下所示的数组:
let array2 = [
[ { "region": "NE", quantity: 25 }, { "region": "NW", quantity: 21 }],
[ { "region": "SE", quantity: 43 } ],
[ { "region": "SW", quantity: 18 }, { "region": "Central", quantity: 20} ]
]
我可以使用forEach 循环通过array1,但是当涉及到添加直到达到某个值,然后创建一个新的数组数组时,我对如何继续进行有点困惑这样做。
这是我目前所拥有的:
let array2 = [] //instantiate array
array1.forEach(function(element, index, array)
{
let sum = 0;
let capacity = 50;
for (let j = 0; j < array1.length; j++)
{
sum += array1[j].quantity;
if (sum >= capacity)
{
//create the new array consisting of the regions, push it into the larger array2
}
}
})
我不确定如何继续执行此操作。我知道我需要执行以下操作:
1. find a way to cut off the addition sequence once the quantity reaches 50
2. reset the sequence
3. form the new arrays and push them into a larger array
任何人都可以提供有关如何进行的任何建议吗?
【问题讨论】:
-
我不确定这个
let animal_shelter_capacity =< 50;对你有什么用。但我确实认为你需要去let capacity = 50并检查结果值是否大于capacity。
标签: javascript arrays loops object foreach