牛客网前端编程:统计数组 arr 中值等于 item 的元素出现的次数

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

猜你喜欢

转载自www.cnblogs.com/purple-windbells/p/11249817.html