重複の可能性:
Javascriptの配列で一致する値をカウントする方法
私は要素を持つ配列を持っています、
array_elements = ["2","1","2","2","3","4","3","3","3","5"];
次のように配列要素をカウントしたいのですが、
答え:
2回→3回
1回→1回
3回→4回
4回→1回
5回→1回
注 : 各値カウントは 1 回だけ出力する必要があります。
重複の可能性:
Javascriptの配列で一致する値をカウントする方法
私は要素を持つ配列を持っています、
array_elements = ["2","1","2","2","3","4","3","3","3","5"];
次のように配列要素をカウントしたいのですが、
答え:
2回→3回
1回→1回
3回→4回
4回→1回
5回→1回
注 : 各値カウントは 1 回だけ出力する必要があります。
var counts = {};
for (var i = 0; i < array.length; i++)
counts[array[i]] = (counts[array[i]] + 1) || 1;
console.log(counts);
toString
これは、配列内のアイテムの表現が受け入れられることを前提としています。たとえば、 と1
同じように表示され"1"
ます。
あなたの例の配列を考えると、これは問題になりません。
要素を並べ替えて、それらをループできます。
array_elements = ["2", "1", "2", "2", "3", "4", "3", "3", "3", "5"];
array_elements.sort();
var current = null;
var cnt = 0;
for (var i = 0; i < array_elements.length; i++) {
if (array_elements[i] != current) {
if (cnt > 0) {
document.write(current + ' comes --> ' + cnt + ' times<br>');
}
current = array_elements[i];
cnt = 1;
} else {
cnt++;
}
}
if (cnt > 0) {
document.write(current + ' comes --> ' + cnt + ' times');
}
var array_elements = ["2","1","2","2","3","4","3","3","3","5"];
var result = array_elements.reduce(function(p, c){
if (c in p) {
p[c]++;
} else {
p[c]=1;
}
return p;
}, {});
console.log(result);
注: 古いブラウザではシムの必要性を減らします。
var arr = ["2","1","2","2","3","4","3","3","3","5"];
var k = {};
//push into hashtable
for(i in arr){
k[arr[i]]=(k[arr[i]]||0)+1; //increments count if element already exists
}
//result
for(var j in k) {
console.log(j+" comes -> "+k[j]+" times");
}