如何计算数组值

时间:2019-06-03 06:59:34

标签: reactjs react-native

有3个数组,在这个值中,我必须计算_activityStatus的计数:“ I”(ony I值)。 我尝试的一种方法是

    StepsStatus :[]

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

我正在StepsStatus中获取所有_activityStatus。现在,我只需要计算我的价值即可。

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

谢谢

2 个答案:

答案 0 :(得分:6)

您可以使用array.filter()仅使用符合特定条件的项目来创建新数组。

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

console.log(iValues.length)

您也可以按照Antonio的建议使用array.reduce(),只记得定义一个默认值,否则结果可能与预期不符。 :)

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

答案 1 :(得分:3)

您可以使用filter()函数来过滤项目。

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

或者您可以使用reduce()函数

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

我更喜欢使用reduce(),因为它比filter()使用更少的内存。

祝你好运。