首页 > 解决方案 > 如何计算状态数组中出现的频率

问题描述

我正在创建一个应用程序,当单击按钮时,该项目的值将添加到状态中。按钮可以被多次点击,因此状态数组可以多次保存同一个项目。

截至目前,我有:

export defaul class Parent extends Component{
  this.state = {array: []}

  onAdd = item => {
    this.setState({array: [...this.state.array, item]});
  }
  render() {
    return(
      ...
      <button onClick{() => {onAdd()}} > Add </button>
      ...
    );
  }
}

我如何获得该数组中特定项目存在的次数?

编辑:有许多不同的项目,名称的长度各不相同,因此用一行来检查每个项目似乎不是最佳做法。

这些项目如下所示:

export const item = [
  {
    id: some int id
    name: some String name
    type: some category as a String
    available: boolean
  }
]

标签: javascriptarraysreactjsstate

解决方案


您可以使用reduce将数组转换为计数而不像返回数组filter一样

function numItems (array, item) {
  return array.reduce((count, curr) => {
    return curr === item
      ? sum + 1
      : sum;
  }, 0);
}

推荐阅读