Есть число (например, 525), и мне нужно разделить его на массив, где каждый элемент не больше 100. Если взять 525, то массив будет выглядеть так:
[
100,
100,
100,
100,
100,
25
]
Вот что я пробовал сделать:
var number = 525;
var array = [];
while (number > 0) {
number -= 100;
array.push(Math.min(number, 100));
}
К сожалению, это решение выдает [ 100, 100, 100, 100, 25, -75 ]. Я понимаю, что использование while не совсем корректно, но это первая идея, которая пришла в голову. Может, кто-то знает более эффективный способ решения этой задачи?
Можно еще через деление с остатком - сначала считаешь полные сотни, потом остаток добавляешь. А зачем именно по 100 разбиваешь? Для лимитов API или что-то другое?
У меня была похожая задача с API платежной системы - тоже был лимит на сумму. Решил через обычный for, заранее считаю сколько итераций нужно:
var number = 525;
var result = [];
var iterations = Math.ceil(number / 100);
for (var i = 0; i < iterations; i++) {
result.push(Math.min(100, number - i * 100));
}
Работает норм, главное что не зависает. Проверял на разных числах, включая меньше 100.