//方法一:最普遍的一种: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;
}