角度需要对数组的值求和

时间:2019-04-29 12:59:58

标签: angular

我有包含数组的数据。在数组中,有一个声明为值的值。我需要数组的所有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;

  });

 }

enter image description here

2 个答案:

答案 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中。 希望这对您有用。