javascript – 计算数组元素的出现次数/频率

Javascript中,我试图获取一个初始数值值数组并计算其中的元素.理想情况下,结果将是两个新数组,第一个指定每个唯一元素,第二个包含每个元素出现的次数.但是,我愿意接受有关输出格式的建议.

例如,如果初始数组是:

5, 5, 5, 2, 2, 2, 2, 2, 9, 4

然后将创建两个新阵列.第一个将包含每个唯一元素的名称:

5, 2, 9, 4

第二个将包含元素在初始数组中出现的次数:

3, 5, 1, 1

因为数字5在初始数组中出现三次,所以数字2出现五次,9和4出现一次.

我经常搜索一个解决方案,但似乎没有任何工作,我自己尝试过的一切都变得非常复杂.任何帮助,将不胜感激!

谢谢 :)

最佳答案
干得好:

function foo(arr) {
    var a = [], b = [], prev;

    arr.sort();
    for ( var i = 0; i < arr.length; i++ ) {
        if ( arr[i] !== prev ) {
            a.push(arr[i]);
            b.push(1);
        } else {
            b[b.length-1]++;
        }
        prev = arr[i];
    }

    return [a, b];
}

现场演示:http://jsfiddle.net/simevidas/bnACW/

Note

This changes the order of the original input array using 07001

转载注明原文:javascript – 计算数组元素的出现次数/频率 - 代码日志