求数组中相同的元素的个数

求数组中相同的元素的个数

问题描述:

例如:var arr=new Array(1,2,22,3,5,3,2,6,3);
求出这数组中2的个数。
[b]问题补充:[/b]
这个题就是求出这个数组中元素为2的个数。

楼上的代码有错误. :)
在for(var ... in ...)语句遍历Array对象时,会遍历到数组的length属性.影响结果的正确性.

对数据遍历的时候,一定要用传统的for语句.

[code="js"]function count(arr,element){
var count=0;
for(var i=0;i<arr.length;i++){
if(arr[i]==element)count++;
}
alert(arr+"中.\n"+element+"的个数为:"+count);
}

var arr = new Array(1,2,22,3,5,3,2,6,3);
count(arr,2);[/code]

输出结果为:
[quote]1,2,22,3,5,3,2,6,3中,2的个数为2[/quote]

遍历下就可以了,类似这样。
[code="js"]
var arr = new Array(1, 2, 22, 3, 5, 3, 2, 6, 3);
alert(count(arr,3));
function count(arr, value) {
var count = 0;
for ( var i in arr) {
if (arr[i] == value)
count++;
}
return count;
}
[/code]

来个另类的:正则
[code="js"]
var arr=new Array(1,2,22,3,5,3,2,6,3);
arr.join('\n').match(/2/g).length
[/code]

哈,LZ的问题是2的个数,不是值为2的个数,楼上几位好像没有看清楚题目呀.

其实我第一眼看到这个题目时,也有点不相信自己的眼睛.揣摩了半天题目的含义,才写的这个回答.
LZ想要的是什么,只有LZ自己知道了...
听天由命吧.

恩,for in语句会遍历到所有的属性,如果是纯净的js还好,比如引入个prototype.js的话,那给这些数算个乘法必然是挂的=。=

这样确实比较危险,偷懒了 :?: