我有一个正整数数组。有些是唯一的,有些是重复的。我正在尝试创建一个函数来计算重复项的数量并将其与相关数字配对。
例如,如果我有这个数组开始:
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/