繁体   English   中英

如何计算变量在javascript数组中重复的次数?

[英]How to count the number of times variables repeats in a javascript array?

如何获得数组成员及其重复的次数(重复发生)?

我目前有这个脚本

//COUNT VAL
var curr = '';
var previous = '';
var arr = new Array();
var sorted = count.sort();
for(var c=0; c < sorted.length; c++){
if(sorted[c] != ''){
if(sorted[c] != curr){
var repeat = 1;
arr[sorted[c]] = repeat;
curr = sorted[c];
}
else if(sorted[c] == curr){
repeat++;
}
}
}
alert(JSON.stringify(arr));

数组“ count”的值是(我使用了JSON.stringify):

[" 2"," 2"," 2","1","1","1","1","1","1","1","1","1","1",null,null,null,null,null,null,null,null,null,null,null,null,null]

我希望脚本显示什么...(我希望它返回一个数组)

[1: 10, 2: 3]

(x:y)x是数字,y是重复次数。

我得到...

[null,1,1]
var a = [" 2"," 2"," 2","1","1","1","1","1","1","1","1","1","1",null,null,null,null,null,null,null,null,null,null,null,null,null];

var counts = a.reduce( function(obj, cur){
    if( !obj[cur] ) {
        obj[cur] = 0;
    }
    obj[cur]++;
    return obj;
}, {});

结果

2: 3
1: 10
null: 13

使用您的代码,

像这样修改循环,

for(var c=0; c < sorted.length; c++){
 if(sorted[c] != ''){
    if(arr[sorted[c]] ){
        var count = arr[sorted[c]];
        count++;
        arr[sorted[c]] = count;
    }
    else{
        arr[sorted[c]] = 1;
    }
 }
}

这将为您提供摘要,而忽略空值

var collection = [" 2"," 2"," 2","1","1","1","1","1","1","1","1","1","1",null,null,null,null,null,null,null,null,null,null,null,null,null];

var summary = collection.reduce(function(a, b) {
    var tmp = parseInt(b)
    if (!isNaN(tmp)) {
        if (!a[tmp]) {
            a[tmp] = 0;
        }
        a[tmp]++;
    }
    return a;
}, {});

console.log(summary);

不知道它是否是最好的解决方案,但是它可以工作并将输出保存在数组中。

var arr = [" 2"," 2"," 2","1","1","1","1","1","1","1","1","1","1",null,null,null,null,null,null,null,null,null,null,null,null,null];

var obj = {};
var final = [];
var count = 0;
for(var i=0,len=arr.length;i<len;i++){
  if(arr[i] in obj){
     final[obj[arr[i]]] ++;
  }
  else{ 
     obj[arr[i]] = count;
     final[count] = 1;
     count++;
  } 
}

console.log(final);

尝试这个:

var repeated = function repeated(arr){
                var res = {};
                for(index in arr){
                    var x = arr[index];
                    if(!res.hasOwnProperty(x))
                        res[x] = 0;    
                    res[x]++;
                }
                return res;
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM