首页 > 解决方案 > 如何使用javascript计算字符串数组中单词的出现次数?

问题描述

如果我有这个数组

const arr1 = ["cat", "I love cats and I have many cats", "dog"]

并将 arr1.filter(s => s.includes("cat")).length;结果运行到 2,因为“cat”包含在 2 个条目中,但是有没有办法使结果等于 3?这意味着将计算单词的出现而不是条目。

标签: javascriptarrays

解决方案


按搜索值拆分字符串。结果将是一个数组,其中包含比实例数多一个的数组。以这种方式迭代数组中的每个字符串并相应地对计数求和。

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') // ['', '']

参考:


推荐阅读