簡體   English   中英

如何為每個新的 object 將其推入數組,避免覆蓋? JavaScript

[英]How to for each new object push it into array, with avoiding override? JavaScript

我有一個 function,它根據價格、月份和利率計算貸款,然后創建貸款數據的 object。

let ratae = list.map((rata) => rata.NKS);
let prr = article.price;
let price = parseFloat(prr.replace(/\.| ?€$/g, '').replace(',', '.'));

for (i = 0; i < ratae.length; i++) {
  loan = new LoanJS.Loan(price, 2, ratae[i]);
  console.log(loan);
}
res.status(200).json(loan);

所以問題是每次獲取新的ratae[i]時,貸款都會覆蓋它自己。 console.log(loan)看起來像這樣:

{ installments:
   [ { capital: 162222.19,
       interest: 1113.13,
       installment: 163335.32,
       remain: 162777.81,
       interestSum: 1113.13 },
     { capital: 162777.81,
       interest: 557.51,
       installment: 163335.32,
       remain: 0,
       interestSum: 1670.64 } ],
  amount: 325000,
  interestSum: 1670.64,
  capitalSum: 325000,
  sum: 326670.64 }
{ installments:
   [ { capital: 162233.67,
       interest: 1067.08,
       installment: 163300.75,
       remain: 162766.33,
       interestSum: 1067.08 },
     { capital: 162766.33,
       interest: 534.42,
       installment: 163300.75,
       remain: 0,
       interestSum: 1601.5 } ],
  amount: 325000,
  interestSum: 1601.5,
  capitalSum: 325000,
  sum: 326601.5 }

所以我在 postman 中的回復只會是最后一installments 我需要某種循環,對於每筆新的分期付款(或每筆新貸款)都將其推送到數組/對象中,那么我想要的 output 將是:

{ installments:
   [ { capital: 162222.19,
       interest: 1113.13,
       installment: 163335.32,
       remain: 162777.81,
       interestSum: 1113.13 },
     { capital: 162777.81,
       interest: 557.51,
       installment: 163335.32,
       remain: 0,
       interestSum: 1670.64 } ],
  amount: 325000,
  interestSum: 1670.64,
  capitalSum: 325000,
  sum: 326670.64 }, //here to add comma or something else to create new object or array of installments
{ installments:
   [ { capital: 162233.67,
       interest: 1067.08,
       installment: 163300.75,
       remain: 162766.33,
       interestSum: 1067.08 },
     { capital: 162766.33,
       interest: 534.42,
       installment: 163300.75,
       remain: 0,
       interestSum: 1601.5 } ],
  amount: 325000,
  interestSum: 1601.5,
  capitalSum: 325000,
  sum: 326601.5 }

還有完整的 function 這部分位於: https://jsfiddle.net/a5jk3fy7/ 在 jsfiddle上查看它,以防止這篇文章中的代碼過多。

任何解決方案的想法? 謝謝。

我不確定,但看起來您的問題可能是由於在異步 function (獲取)中使用全局綁定( i )作為計數器。

如果您inside循環中聲明let i = 0 (類似於下面的簡單示例),問題 go 會消失嗎?

 let ratae = [1, 2, 3]; for (let i = 0; i < ratae.length; i++) { const loan = { detail: ratae[i] }; console.log(loan); }

嘗試這樣的事情:

const loan = list.map((rata) =>
     LoanJS.Loan(price, 2, rata.NKS)
);

就像您帖子中的評論一樣,您正在壓倒loan 有了這個 u rata並且對於每個比率你插入新的loan條目

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM