js基礎-陣列函式庫
阿新 • • 發佈:2019-01-26
/** * 陣列函式庫 */ 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));