[英]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.