javascript - 如何使用javascript计算字符串数组中单词的出现次数?
问题描述
如果我有这个数组
const arr1 = ["cat", "I love cats and I have many cats", "dog"]
并将
arr1.filter(s => s.includes("cat")).length;
结果运行到 2,因为“cat”包含在 2 个条目中,但是有没有办法使结果等于 3?这意味着将计算单词的出现而不是条目。
解决方案
按搜索值拆分字符串。结果将是一个数组,其中包含比实例数多一个的数组。以这种方式迭代数组中的每个字符串并相应地对计数求和。
const countInstances = (value, arr) => arr.reduce(
(a,v) => a += v.split(value).length-1
, 0);
console.log(countInstances('cat', ["cat", "I love cats and I have many cats", "dog"]));
不明显的一点是,如果要拆分的字符串位于要拆分的字符串的开头/结尾,则结果在该结尾处包含一个空字符串:
'something cat'.split('cat'); // ['something ', '']
'cat something'.split('cat'); // ['', ' something']
'cat'.split('cat') // ['', '']
参考:
推荐阅读
- javascript - 无法在本地主机中显示数据库中的用户
- javascript - 无法访问不断变化的变量(Johnny-Five 操纵杆)
- asp.net-mvc - asp .net mvc postdata 在控制器中始终为 0
- java - Spring Boot (STS) 中无法识别 ConstraintCollectors
- database - 谁应该更新 EF Core 中的并发令牌?
- ffmpeg - 使用 ffmpeg 剪切视频时出现空流
- django - 如何在 Graphene Django 中记录有关 GraphQL 请求的信息?
- javascript - 使用循环突出显示表中的当前半小时
- python - 是否可以制作一个通过完全自包含的子进程调用 python 脚本的 PyQt5 应用程序?
- r - 在 Xpath 中同时转义双引号和单引号