1. 程式人生 > >js基礎-陣列函式庫

js基礎-陣列函式庫

/**
 * 陣列函式庫
 */
var aArr = [1, 2, 3, 3, 2, 1, 4, 5, 6, 6, 5, 4];

function ArrTools() {

}
ArrTools.prototype = {
    //1、陣列去重
    // (1)建立一個新的陣列arr2,存放去重後的陣列;
    // (2)建立一個空物件json,作為中介軟體;
    // (3)遍歷原陣列arr,每次取出一個元素,訪問這個物件json是否存在這個屬性,
    // 如果有的話就說明重複了,如果沒有的話,把這個元素放到結果陣列arr2中,
    // 同時把這個元素作為物件的屬性,賦值為1,方便後續元素對比。
    removeRepeatArr: function (arr) {
        var json = {};
        var arr2 = [];
        for (var key in arr) {
            if (!json[arr[key]]) {
                arr2.push(arr[key]);
                json[arr[key]] = arr[key];
            }
        }
        return arr2;
    },
    //2、陣列亂序
    randomArr: function (arr) {
        return arr.sort(function () {
            return Math.random() > 0.5 ? -1 : 1;
        });
    },
    //3、獲取最大值
    // Math.max()方法,支援傳遞多個引數,比如:Math.max(1, 4, 2, 3, 7, 5, 6)
    // 但是它不支援直接傳遞一個數組作為引數,比如:Math.max(new Array(1, 4, 2, 3, 7, 5, 6)) 。
    // 這裡,只要我們有方法把陣列,一個一個拆分開來,傳遞到Math.max()方法中,就實現了傳遞陣列的方法。
    //當使用apply時,把所有引數加入到一個數組中,即Math.max(1, 4, 2, 3, 7, 5, 6)
    getArrMax: function (arr) {
        return Math.max.apply(null, arr);
    },
    //4、獲取最小值
    getArrMin: function (arr) {
        return Math.min.apply(null, arr);
    },
    //5、隨機獲取陣列元素
    getRandomItem: function (arr) {
        return arr[Math.floor(Math.random() * arr.length)];
    },
    //6、陣列求和平均值
    getArrSum:function(arr,isFlag){
        var sum=0;
        //Array有個forEach函式,其實參一般是一個匿名函式,對Array每一個元素做某種操作
        arr.forEach(function(item){
            sum+=item;
        });
        if(isFlag){
            return sum;
        }else{
            return sum/arr.length;
        }
    },
    // 7、將陣列的第n個元素放到開頭
    pushFirst:function(arr,n){
         //splice返回的是我們要刪除元素
         arr.unshift(arr.splice(n,1)[0]);
         return arr;
    },
    //8、按age進行排序
    sortAge:function(arr){
        arr.sort(function(a,b){
            return a.age<b.age?-1:1;
        });
    },
    // 9、篩選age大於某個值的元素,filter必須ie9及其以上才能用
    seletAge:function(arr,ages){
        return arr.filter(function(item){
            return item.age>ages;
        });
    }
}
console.log(ArrTools.prototype.removeRepeatArr(aArr));
console.log(ArrTools.prototype.randomArr(arr));
console.log(ArrTools.prototype.getArrMax(arr));
console.log(ArrTools.prototype.getArrMin(arr));
console.log(ArrTools.prototype.getRandomItem(arr));
console.log(ArrTools.prototype.getArrSum(arr,1));
console.log(ArrTools.prototype.pushFirst(arr,2));