Как увеличить каждый 12-й раз и сохранить промежуточную сумму с помощью литерала объекта и цикла while? - PullRequest
0 голосов
/ 26 сентября 2019

Немного истории. Это была домашняя проблема, которую я сдал. Еще не получил оценку;но, поскольку он не соответствовал требованиям, я, вероятно, не получу А. Они хотели, чтобы я увеличил год в этом коде после 12 ежемесячных платежей и сохранил промежуточную сумму на сколько процентов я заплатил.Код работает или не выдает ошибок.Примечание: я до сих пор не могу понять, почему он хотел, чтобы минимальный платеж действительно помогал.

Проблема. Я не знаю, как увеличивать свойство объекта литерал каждые 12 итераций.(Чтобы показать, что вы сделали двенадцать платежей и начался следующий год) Я не мог понять, как сохранить промежуточную сумму выплаченных процентов.

Вещи, которые я пробовал. Я попытался использовать петли с в собственности года.Либо это не может быть сделано, либо я делаю что-то не так.Я пытался увеличить год на основе идентификатора платежа с помощью if else, но он увеличивается только один раз.Я попытался увеличить год до и после цикла.Затем он синхронизируется с идентификатором платежа, частичный успех?

function displayWelcome() {
  printLine();
  console.log('Welcome to the credit card payoff tool.');
  printLine();
  console.log('This program will determine the time it \nwill take to pay off a credit card!');
  printLine();
}
displayWelcome();

function calculateMinimumPayment(balance, interestRate) {    
  var calcMinPay = balance * interestRate; 
  console.log(calcMinPay);  
  return calcMinPay 
}

function generatePaymentId() {  // lines 14 - 22 are a closure function. 
  var count = 0;
  function paymentId() {
    count ++;           
    return count;
  }
  return paymentId;
};
var id = generatePaymentId();



function processPaymentSchedule(balance, interest, minimumPayment) {
  var year = 1;
  var counter = 0;
  while (balance > 0) {
    counter ++;
    year += 0.08333333333;
    var interestDecimal = interest / 100;
    var interestMonthly = interestDecimal / 12;
    var interestPaid = balance * interestMonthly;
    var princplePaid = minimumPayment - interestPaid;
    var balance = balance - princplePaid;    

    var payment = {
      year: year.toFixed(0), 
      balance: balance.toFixed(2), 
      paymentId: id(), 
      interestPaid: interestPaid.toFixed(2)
    };

    function definePayment() {
      console.log(payment);  
    } 

    definePayment();

    if (payment.paymentId > 11) {
      year += 1;
    } 

  }
}

function printLine() {
  console.log('---------------------------------------');
}


processPaymentSchedule (1500, 18, 30);

Ошибки: В этом коде нет сообщений об ошибках, просто не знаю, как выполнять перечисленные выше действия.

1 Ответ

1 голос
/ 26 сентября 2019

Чтобы выяснить, является ли это счет «каждый N-й» на итерации, вы можете использовать оператор по модулю %, чтобы получить остаток от базового целочисленного деления.Просто по модулю переменной счетчика на 12, и если счетчик больше 0, то он 12, 24 и т. Д. Проходит через ваш цикл.

  var counter = 0;
  while (balance > 0) {
    counter ++; 
    if (counter%12==0)
        console.log("You are on a (N*12)th loop run");  
    }
  } 

Однако, когда дело доходит до расчета процентов и платежейи поэтому я бы рекомендовал делать все ваши расчеты в «месяце», а затем, когда у вас есть общее количество в месяцах, преобразовать это в годы, если это необходимо / желательно.

...