2014-09-04 75 views

回答

0

只是为了好玩(只适用于字符串和数字)。

[2,2,2,3,3,3,3,3].join().match(/3/g).length; // return 5 
+0

仅适用于个位数的整数:[2,2,2,3,3,3,3,33]。加入( ).match(/ 3/g).length是6而不是4 – SheetJS 2014-10-21 14:33:10

0

是这样的?

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 
0

在纯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)); 
1
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

+1

根据你的心态,map [arr [i]] =(map [arr [i]] || 0)+ 1;'is更紧凑。 – 2014-09-04 16:54:36

0

= 3
一个循环。

var thisChar; 
var thisCharCount; 
for (var i = 0; i < yourArray.length; i++) { 
    if(yourArray[i] == thisChar) 
    thisCharCount++; 
} 

根据您与设定值或动态可比值进行比较,使用数组。

0

使用下划线:

_.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; 
} 
0

为什么不使用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); 
}); 

+0

是的,只有jQuery可以做循环。顺便说一下,'type = javascript'不是必需的。请参阅http://stackoverflow.com/questions/5265202/do-you-need-text-javascript-specified-in-your-script-tags。 – 2014-09-04 12:03:49

相关问题