Как разбить число на части по максимум 100 в JavaScript?

Есть число (например, 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 не совсем корректно, но это первая идея, которая пришла в голову. Может, кто-то знает более эффективный способ решения этой задачи?

Твоя логика зациклилась. Попробуй так:

var number = 525;
var array = [];
while (number > 0) {
    var chunk = Math.min(number, 100);
    array.push(chunk);
    number -= chunk;
}

Вычисляем сколько взять (100 или остаток), пушим в массив, потом вычитаем. Работает с любыми числами.

Можно еще через деление с остатком - сначала считаешь полные сотни, потом остаток добавляешь. А зачем именно по 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.