Как l oop через массив и вычислить сумму, используя angular rxjs - PullRequest
0 голосов
/ 24 февраля 2020

const activityDetails = [

{
    username: "Tester",

    pointDetails: [

        {
            points: 4826,
            pointType: "BONUS"
        },
        {
            points: 9652,
            pointType: "BASE"
        },
        {
            points: 14478,
            pointType: "CLS"
        }
    ]
},
{
    username: "Tester2",
    pointDetails: [
        {
            points: 1126,
            pointType: "BONUS"
        },
        {
            points: 9652,
            pointType: "BASE"
        },
        {
            points: 44566,
            pointType: "CLS"
        }
    ]
}

]

Ниже приведен код, который я пытаюсь перебрать в массиве и подсчитать точку BONUS и BASE. Я что-то упустил или есть лучший способ перебрать массив и подсчитать число? спасибо

activityDetails.filter(n=>{
       n.pointDetails.reduce((sum:any, rates:any) => {
     if (rates.pointType === "BONUS" || rates.pointType === "BASE") {
       sum+= rates.points;
       console.log(sum);
     }

   }, 0)

   })

1 Ответ

1 голос
/ 24 февраля 2020

Если вы хотите решить это с помощью Reduce, вы можете сделать это следующим образом:

this.details.reduce((sum, current: { sum: number, sumType: string }) => {
      if (current.sumType === 'BONUS' || current.sumType === 'BASE') {
        sum += current.sum;
      }
      return sum;
    }, 0)

Это накапливает свойство sum ваших объектов, но только если sumType равно 'BASE' или 'BONUS'

...