1. 程式人生 > >JS能力測評11:計數

JS能力測評11:計數

思路:

遍歷的方法

function count(arr, item) {
    var num=0;
    for(var i=0;i<arr.length;i++)
    {
        if (arr[i]==item)
        {
            num+=1;
        }
    }
    return num
}

forEach迴圈看起來更加簡潔,傳入一個匿名方法,接收一個引數e用於傳入陣列中的每一項,最後用一個三元條件運算子來判斷結果,true則執行count++,false則為0,最後返回count 

function count(arr, item) {
     var count = 0;
     arr.forEach(function(e){
         //e為arr中的每一個元素,與item相等則count+1
         e == item ? count++ : 0;
     });
     return count;
 }

收集大佬的思想 

//filter()-->利用指定的函式確定是否在返回的陣列中包含某一項
        function count(arr, item) {
            var count = arr.filter(function(a) {
                return a === item;   //返回true的項組成的陣列
            });
            return count.length;
        }
        //map()-->對陣列中的每一項進行給定函式,
        //返回每次函式條用的結果組成的陣列;
        function count(arr, item) {
            var count = 0;
            arr.map(function(a) {
                if(a === item) {
                    count++;
                }
            });
            return count;
        }
        //for迴圈
        function count(arr, item) {
            var count = 0;
            for(var i=0; i<arr.length; i++) {
                if(arr[i] === item) {
                    count++;
                }
            }
            return count;
        }
        //reduce()-->從陣列的第一項開始,逐個遍歷到最後;
        function count(arr, item) {
            var count = arr.reduce(function(prev, curr) {
                return curr === item ? prev+1 : prev;
            }, 0);
            return count;
        }
                //forEach()-->對陣列中的每一項執行傳入的函式
        function count(arr, item) {
            var count = 0;
            arr.forEach(function(a) {
                a === item ? count++ : 0;
            });
            return count;
        }