如何在javascript中按每个元素计算数组元素
可能重复:如何在javascript中按每个元素计算数组元素,javascript,Javascript,可能重复: 我有一个数组,元素为 数组元素=[“2”、“1”、“2”、“2”、“3”、“4”、“3”、“3”、“3”、“3”、“5”] 我想按如下方式计算数组元素 答复: 2次-->3次 1来-->1次 3次-->4次 4次-->1次 5次-->1次 注意:每个值计数只能打印一次。var counts={}; var counts = {}; for (var i = 0; i < array.length; i++) counts[array[i]] = (counts[ar
我有一个数组,元素为 数组元素=[“2”、“1”、“2”、“2”、“3”、“4”、“3”、“3”、“3”、“3”、“5”] 我想按如下方式计算数组元素 答复: 2次-->3次
1来-->1次
3次-->4次
4次-->1次
5次-->1次
注意:每个值计数只能打印一次。
var counts={};
var counts = {};
for (var i = 0; i < array.length; i++)
counts[array[i]] = (counts[array[i]] + 1) || 1;
console.log(counts);
对于(var i=0;i
这假设可以接受数组中项目的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');
}
array_elements=[“2”、“1”、“2”、“2”、“3”、“4”、“3”、“3”、“3”、“5”];
数组_元素。排序();
无功电流=零;
var-cnt=0;
对于(var i=0;i0){
document.write(当前+'来-->'+cnt+'次
');
}
电流=阵列_元素[i];
cnt=1;
}否则{
cnt++;
}
}
如果(cnt>0){
document.write(current+'comes-->'+cnt+'times');
}
演示:
注意:对于旧浏览器,reduce需要一个垫片。您想用Ruby或JavaScipt计算它们吗?如果是后者,为什么要使用ruby标记?您知道如何编写for循环和使用对象吗。似乎是基本的家庭作业101类问题。重复问题:对于喜欢花哨词汇的人来说,这是一个
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");
}
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);