Я работаю над проектом, который включает в себя двухмерные массивы объектов. Я некоторое время пытался выяснить этот ответ, и у меня есть некоторые идеи, как его решить, но я немного озадачен.
Давайте предположим, что в 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} ]
]
Я могу перебрать array1
, используя forEach
, но когда дело доходит до добавления до достижения определенного значения, а затем создания нового массива массивов, я немного озадачен тем, как перейти к сделай это.
Вот что у меня есть:
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
Может ли кто-нибудь дать совет, как поступить?