Как добавить один элемент несколько раз в массив сразу

Chi Lee спросил: 28 марта 2018 в 03:00 в: javascript

Функция должна отображать количество монет, соответствующих определенному значению; т.е.: вход 56 должен отображаться назад [25, 25, 5, 1].

У меня возникают проблемы: 1) отображение 2+ одной и той же монеты в массиве (я понимаю, что функция Math ниже не используется правильно) 2) удаление любых 0 из массива

Спасибо за вашу помощь.

function getCoins(){
	let coins = [25, 10, 5, 1];
	    amount = prompt ("Enter an amount to convert into coins");
	    coinAmount = "";
					

	for (i = 0; i < coins.length; i++){
		if (amount % coins[i] >= 0){ 
			coinAmount +=  coins[i] * (Math.floor (amount/coins[i])) + ","; 
			amount = amount % coins[i];  	
			console.log (coinAmount)
		} 
	} 
}
		
getCoins()

2 ответа

Есть решение
Eddie ответил: 28 марта 2018 в 03:10

Один из вариантов - push массива и использовать join для его отображения.

Вы можете concat добавить монету в и new Array(NumberOfCouns) с типом монеты.

function getCoins() {
  let coins = [25, 10, 5, 1];
  let amount = prompt("Enter an amount to convert into coins");
  let coinAmount = [];


  for (i = 0; i < coins.length; i++) {
    if (Math.floor(amount / coins[i]) > 0) {

      coinAmount = coinAmount.concat(new Array(Math.floor(amount / coins[i])).fill(coins[i]));
      amount = amount - (Math.floor(amount / coins[i]) * coins[i]);
    }
  }

  console.log(coinAmount.join())
}

getCoins();
Charis Moutafidis ответил: 28 марта 2018 в 03:07

Как насчет этого?

function getCoins(){
    let coins = [25, 10, 5, 1];
        amount = prompt ("Enter an amount to convert into coins");
        coinAmount = "";    for (i = 0; i < coins.length; i++){
        if (amount >= coins[i]){ 
            var integer = parseInt(amount/coins[i]);
            coinAmount +=  integer + ","; 
            amount -= integer*coins[i];     
            console.log (coinAmount);
        }
        else{
            coinAmount += "0,";
            console.log (coinAmount);
        }
    } 
}getCoins()

для ввода 30:

1,
1,0,
1,0,1,
1,0,1,0,

Потому что у нас есть 1 монета достоинством 25 и 1 монета со значением 5

для входа 25:

1,
1,0,
1,0,0,
1,0,0,0,