//方法一:最普遍的一种:for循环 function count(arr, item) { var cnt=0; for (var i = 0;i<arr.length;i++){ if (arr[i]===item){ cnt++; } } return cnt; }
//方法二:使用filter //filter(function(currentValue, index,arr)) //当有三个参数时:数组当前值,数组当前索引,该数组名称 //当有一个参数时:数组当前值 //filter返回的为符合函数条件的数组,且不改变原数组 function count1(arr, item) { var cnt= arr.filter(function (a) { return a===item; }) return cnt.length; }
//方法三:使用map函数 //map函数和filter有点像,但是map是对数组中的所有元素进行复核函数条件的处理,最终得到的是一个新数组,元素个数不变 //filter函数虽然也是返回一个新数组,但是元素的个数等于复核函数条件的元素总和, function count2(arr, item) { var cnt = 0; arr.map(function (a) { if (a===item){ cnt++; } }) return cnt; }
//方法五:foeEach,我觉得和for挺像的 function count4(arr, item) { var cnt = 0; arr.forEach(function (a) { a===item ? cnt++ : cnt; }) return cnt; }
//方法四:使用reduce //reduce(function (init,curr,curr_index),initialValue) //其中init:初始元素;curr:当前元素;curr_index:当前元素索引;initialValue:函数初始值; //init和curr是必须的,其他参数可选 function count3(arr, item) { var cnt = arr.reduce(function (init,curr) { //如果当前置等于item,该函数值加一 return curr === item ? init+1:init; },0) return cnt; }