[英]Angular need to sum the values of array
我有包含數組的數據。 在數組中,有一個值是claimed_value。 我需要數組的所有 claimed_value 的總和。 我有數組的一個例子都有 claimed_value。 但我需要對數組中狀態為 settled 的所有 claimed_value 求和。
這就是我調用 API 的方式。
getClaims(){
if(this.userFilter.company_id){
let url =
'http://api.igiinsurance.com.pk:8888/insurance_IGItakaful/insurance-
api/get_claims.php?company_id='+this.userFilter.company_id;
}else{
let url =
'http://api.igiinsurance.com.pk:8888/insurance_IGItakaful/insurance-
api/get_claims.php?offset=0&limit=200';
}
this.clientData = this.httpClient.get(url).
subscribe(data => {
console.log(data);
this.data = data.records;
var status = 'settled';
var status2 = 'submitted';
var countsettled = this.data.filter((obj) => obj.status ===
status).length;
var countunsettled = this.data.filter((obj) => obj.status ===
status2).length;
console.log(countsettled);
this.countsettled = countsettled;
console.log(countunsettled);
this.countunsettled = countunsettled;
});
}
您的問題比 angular 更通用的javascript
您可以使用Array.reduce
函數對數組元素求和
您可以通過先過濾來總結特定狀態
IE
const sum = this.data.filter(item => item.status === 'settled')
.reduce((acc, item) => acc + Number(item.claimed_value), 0);
請注意,如評論中所述,您收到的是string
而不是number
,因此您必須首先轉換它(請參閱 reduce closure)) otherwise the
Number() function in the
))否則 +` 運算符只會連接字符串
let finalSum = 0;
this.data.forEach((item) => {
if(item.status === 'settled'){
finalSum += item.claimed_value
}
});
console.log("final sum is ", finalSum);
您好,這將在您的數據列表中的所有數組上循環,並將claimed_value
的數量添加到finalSum
。 希望這對你有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.