javascript - 计算数组中有多少个字符串在同一个数组中有重复项

标签 javascript

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/

相关文章:

javascript - 使用 jQuery 在类之间交换时触发淡入淡出

javascript - 使用 HTML5 的多个线性视频

javascript - 如何根据纬度和经度获取两个位置之间的距离?

javascript - CKEDITOR 小部件拖放到所需元素中

javascript - 如何在 AngularJS 中使用 JSON 数组?

javascript - 动态附加元素后重新应用样式属性

Javascript/Jquery 动画条件问题

javascript - 如何随机更改多个 <SPAN> 的 backgroundColor?

javascript - 变量内部循环内部成功 : in ajax call JS

javascript - 显示数组中的图像,让用户选择一张并更改节点中的图像