我有包含数组的数据。在数组中,有一个声明为值的值。我需要数组的所有claimed_value的总和。我有一个数组的示例都具有claimed_value。但是我需要对数组中具有status = 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;
});
}
答案 0 :(得分:4)
您的问题比角度问题javascript
更普遍
您可以使用Array.reduce
函数对数组元素求和
您可以通过首先过滤来总结特定状态
即
const sum = this.data.filter(item => item.status === 'settled')
.reduce((acc, item) => acc + Number(item.claimed_value), 0);
请注意,如评论中所述,您收到的是string
而不是number
,因此您必须首先将其转换(请参阅Number() function in the
reduce closure)) otherwise the
+`运算符只是连接字符串
答案 1 :(得分:0)
let finalSum = 0;
this.data.forEach((item) => {
if(item.status === 'settled'){
finalSum += item.claimed_value
}
});
console.log("final sum is ", finalSum);
您好,这将在数据列表中的所有数组上循环,并将claimed_value
的数量添加到finalSum
中。
希望这对您有用。