Abhigyan Gaurav
Abhigyan Gaurav

Reputation: 1904

how to take count of array value

There are 3 array ,in this value I have to take count of _activityStatus :"I" (ony I value) . one way i am trying is

    StepsStatus :[]

    StepsStatus = StepsVaue.map(StepsVaue => {
          return StepsVaue._activityStatus;
    }); 

I am taking all _activityStatus in StepsStatus . Now I have to take count of I value only .

currentNextActivity: Array(3)
    0:
    __typename: "CurrentNextActivity"
    _activityName: "FXL_ACT1"
    _activityStatus: "I"
    _maxHoldTime: "60"
    _userName: "tecnotree"

   1:
    __typename: "CurrentNextActivity"
    _activityName: "FXL_ACT2"
    _activityStatus: "I"
    _maxHoldTime: "60"
    _userName: "tecnotree"
    __proto__: Object

    2:
    __typename: "CurrentNextActivity"
    _activityName: "FXL_ACT3"
    _activityStatus: "N"
    _maxHoldTime: "120"
    _userName: null

Thanks

Upvotes: 2

Views: 944

Answers (2)

Cat_Enthusiast
Cat_Enthusiast

Reputation: 15688

You can use array.filter() to create a new array, using only items that match a certain condition.

let iValues = StepsVaue.filter((item) => {
   return item._activityStatus === "I"
})

console.log(iValues.length)

You may also use array.reduce() as Diamond suggested, just remember to define a default value or your result may not be what you expect. :)

StepsVaue.reduce((total, item) => total + (item._activityStatus === "I" ? 1 : 0), 0)

Upvotes: 7

Diamond
Diamond

Reputation: 3438

You can use filter() function to filter items.

StepsValue.filter(item => item._activityStatus === "I").length

Or you can use reduce() function

StepsValue.reduce((count, item) => count + (item._activityStatus === "I" ? 1 : 0), 0)

I prefer to use reduce() because it will use less memory than filter().

Good Luck.

Upvotes: 5

Related Questions