javascript - 计算并删除 JavaScript 数组中的重复项

标签 javascript arrays

我有一个正整数数组。有些是唯一的,有些是重复的。我正在尝试创建一个函数来计算重复项的数量并将其与相关数字配对。

例如,如果我有这个数组开始:

arr = [89, 1, 1, 2, 89, 89];

我正在尝试得到这个结果:

res = [
       {"id" : 1, "count" : 2 },
       {"id" : 2, "count" : 1 },
       {"id" : 89, "count" : 3 }
      ];

这是我编写的函数,但它不起作用,我觉得有更好的解决方案:

    function cons_dupes(arr) {
    //Consolidate duplicates by deleting everything but one of each.
    //Also adds a count of total duplicates with each index.
    var out = {};

    for (i=0;i<arr.length;i++)
    {
        if (arr[i] !== 'null') 
        {

            out[i] = {
                data: arr[i],
                count: 1
            };

            for (ii=0; ii<arr.length; ii++) 
            {
                if (arr[i]==arr[ii])
                {
                    arr[ii] = 'null';
                    out[i].count++;
                }
            }
        }
        else
        {
        console.log('null value: arr['+ii+']');
        }
    }

    return out;
}

非常感谢任何帮助!

最佳答案

您可能需要分两步完成此操作:1) 创建一个保存每个 id 计数的对象,然后 2) 创建最终的对象数组。例如:

var a = [89, 1, 1, 2, 89];
var counts = {};
var final = [];

for (var i = 0; i < a.length; i++) {
    if(counts[a[i]] != undefined) {
        counts[a[i]] = 1;
    } else {
        counts[a[i]]++;
    }
}

for (var num in counts) {
    final.push({'id': num, 'count': counts[num]});
}

// final has what you want here

关于javascript - 计算并删除 JavaScript 数组中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27957592/

相关文章:

javascript - ReactJS IconButton 在 Firefox 中不起作用

javascript - 如何根据索引数组更改元素的状态?

javascript - 如何确定 "clock"形状连接?

java - 将对象数组传递给静态方法时出现空指针异常

javascript - 修改减少es6

javascript - 无法将超大图像与 div 的中心对齐

javascript - 如何使用javascript查找最大用户浏览器窗口宽度和当前

arrays - 如何在类之外使用函数

javascript - 从对象获取值并插入数组javascript

java - java中的ByteBuffer在没有写入任何内容时返回数据,不会抛出异常