javascript - 如何计算状态数组中出现的频率
问题描述
我正在创建一个应用程序,当单击按钮时,该项目的值将添加到状态中。按钮可以被多次点击,因此状态数组可以多次保存同一个项目。
截至目前,我有:
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
}
]
解决方案
您可以使用reduce
将数组转换为计数而不像返回数组filter
一样
function numItems (array, item) {
return array.reduce((count, curr) => {
return curr === item
? sum + 1
: sum;
}, 0);
}
推荐阅读
- java - Android Studio 应用程序 | Firebase 数据库参考不起作用
- assembly - 如何在 arm 程序集中正确使用 malloc 函数打开文件?
- php - 检索直接消息 twitter api [空数组]
- python - 如何让我的 html 模板正确引用上传的媒体内容?
- vb.net - 为什么 vb.net 中其他 Visualstudio 版本(2003->2012)中的 GetResponseStream 工作错误
- vue.js - Router-link 绑定到 b-card 映像
- java - 如何在另一个项目中使用自定义 jar 的组件
- wso2 - 在同意“server_error:处理同意时出错”后使用 WSO2 开放 ID 连接出现错误
- lotus-notes - HTTPPassword 字段未加密
- reactjs - React Router 将 props 传递给先前定义的元素