我们可以使用javascript查找数组中元素的数量吗?
只是为了好玩(只适用于字符串和数字)。
[2,2,2,3,3,3,3,3].join().match(/3/g).length; // return 5
是这样的?
function searchInArray(someInt, someArray){
var count = 0;
for(var i in someArray){
if(someArray[i] === someInt){
count++;
}
}
return count;
}
searchInArray(2, [2,2,2,2,2,3,4,4,4,5]);
//returns 5
在纯JavaScript:
function countOccurrences(array) {
var occurrences = {};
for (var i = 0, l = array.length; i < l; i++) {
if (occurrences[array[i]] === undefined) {
occurrences[array[i]] = 1;
}
else {
occurrences[array[i]]++;
}
}
return occurrences;
}
var test = [2,2,2,2,3,3,3,3,3,4,4,5];
console.log(countOccurrences(test));
var map = {};
var arr = [2, 2, 2, 3, 3, 3, 3, 3];
for (var i = 0; i < arr.length; i++) {
if (map[arr[i]]) {
map[arr[i]]++;
} else {
map[arr[i]] = 1;
}
}
for(var key in map){
console.log("occurence of "+ key+" = "+map[key]);
}
输出:
occurence 2 occurence使用3 = 5
根据你的心态,map [arr [i]] =(map [arr [i]] || 0)+ 1;'is更紧凑。 – 2014-09-04 16:54:36
= 3
一个循环。
var thisChar;
var thisCharCount;
for (var i = 0; i < yourArray.length; i++) {
if(yourArray[i] == thisChar)
thisCharCount++;
}
根据您与设定值或动态可比值进行比较,使用数组。
使用下划线:
_.groupBy([2,2,2,3,3,3,3,3])
> {2: [2,2,2], 3: [3,3,3,3,3]}
然后计数阵列的长度。
它自己使用Array#reduce
做:
function counts(array) {
return array.reduce(function(prev, current) {
prev[current] = (prev[current] || 0) + 1;
return prev;
}, {});
}
> counts([2,2,2,3,3,3,3,3]) // {2: 3, 3: 5}
要计算一个特定val
的出现:
function count(array, val) {
for (var i=0, index=0; (index = array.indexOf(val, index)) !==-1; i++) { }
return i;
}
或者如果你喜欢
function count(array, val) {
var i=0, index=0;
while ((index = array.indexOf(val, index)) !== -1) { i++; }
return i;
}
或许递归?
function count(array, val) {
var index = array.indexOf(val);
return index === -1 ? 0 : count(array.slice(index), val) + 1;
}
为什么不使用jQuery:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
var count2 = 0, count3 = 0;
$.each([2,2,2,3,3,3,3,3], function(index, value) {
if(value==2)
count2++;
if(value==3)
count3++;
});
alert("2:"+count2);
alert("3:"+count3);
});
是的,只有jQuery可以做循环。顺便说一下,'type = javascript'不是必需的。请参阅http://stackoverflow.com/questions/5265202/do-you-need-text-javascript-specified-in-your-script-tags。 – 2014-09-04 12:03:49
仅适用于个位数的整数:[2,2,2,3,3,3,3,33]。加入( ).match(/ 3/g).length是6而不是4 – SheetJS 2014-10-21 14:33:10