Possible Duplicate:
Array value count javascript
我有一个包含多个重复项的数组,我想要实现的是计算这个数组中每个唯一字符串有多少个重复项。
数组看起来像这样
array = ['aa','bb','cc','aa','ss','aa','bb'];
因此我想做这样的事情
if (xWordOccurrences >= 5) {
// do something
}
但我不确定如何编写此代码。 我在想,用每个唯一的字符串创建一个对象,然后循环遍历原始数组,将每个字符串与其对象匹配并将其数字加 1,然后循环该对象以查看哪些单词重复最多...
但这似乎是一种过于复杂的方法。
最佳答案
您可以使用具有数组值键的对象并执行类似的操作
// count everything
function getCounts(arr) {
var i = arr.length, // var to loop over
obj = {}; // obj to store results
while (i) obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences
return obj;
}
// get specific from everything
function getCount(word, arr) {
return getCounts(arr)[word] || 0;
}
getCount('aa', ['aa','bb','cc','aa','ss','aa','bb']);
// 3
如果您只想获取一个,那么使用 getCounts
的修改版本会更有效,它看起来类似于 getCount
,我'将其命名为getCount2
function getCount2(word, arr) {
var i = arr.length, // var to loop over
j = 0; // number of hits
while (i) if (arr[--i] === word) ++j; // count occurance
return j;
}
getCount2('aa', ['aa','bb','cc','aa','ss','aa','bb']);
// 3
关于javascript - 计算数组中有多少个字符串在同一个数组中有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14227981/