jQuery 數組全家桶 (最大、最小、求和、平均值、排序、元素出現次數、去重)的方法

本篇文章主要介紹了求JS數組的一些方法,具有很好的參考價值。

給定數組[25,28,8,65,25,32,40,68],求其最大值、最小值 、求和、平均值、排序、元素出現次數、去重等相關問題解決方法?

1、最大值和最小值的不同實現方法

      1.1字符串拼接法:利用toString和join把數組轉換爲字符串,再和Math的max和min方法分別進行拼接,最後執行eval方法

var arr = [25,28,8,65,25,32,40,68];
var maxN = eval("Math.max(" + arr.toString() + ")");
var minN = eval("Math.min(" + arr.toString() + ")");
console.log("最大值爲:"+maxN);
console.log("最小值爲:"+minN);

  或者 join

var arr = [25,28,8,65,25,32,40,68];
var maxN = eval("Math.max(" + arr.join() + ")");
var minN = eval("Math.min(" + arr.join() + ")");
console.log("最大值爲:"+maxN);
console.log("最小值爲:"+minN);

  1.2排序法 :先把數組從小到大排序,數組第一個即爲最小值,最後一個即爲最大值

var arr = [25,28,8,65,25,32,40,68];
sort_arr(arr);
function sort_arr(arr){
	arr.sort(function(a,b){return a-b;});
	var minN = arr[0];
	var maxN = arr[arr.length-1];
    console.log("最大值爲:"+maxN);
    console.log("最小值爲:"+minN);
}

1.3假設法: 假設數組第一個爲最大(或最小值),和後邊進行比較,若後邊的值比最大值大(或比最小值小),則替換最大值(或最小值)

var arr = [25,28,8,65,25,32,40,68];
var maxN = arr[0];
var minN = arr[0];
for(var i=1;i<arr.length;i++){
	var cur = arr[i];
	cur>maxN ? maxN=cur : null;
	cur<minN ? minN=cur : null;
}
console.log("最大值爲:"+maxN);
console.log("最小值爲:"+minN);

 1.4Math的max和min方法 :使用apply方法使數組可以作爲傳遞的參數

var arr = [25,28,8,65,25,32,40,68];
var maxN = Math.max.apply(null,arr);
var minN = Math.min.apply(null,arr);
console.log("最大值爲:"+maxN);
console.log("最小值爲:"+minN);

2、一個完全的方法求最大、最小、平均、求和

// 第一種方法
var arr = [25,28,8,65,25,32,40,68];
console.log("最大值爲:"+MaxNum(arr));
console.log("最小值爲:"+MinNum(arr));
console.log("和爲:"+SumNum(arr));
console.log("平均值爲:"+AverageNum(arr));

function MaxNum(arr) {
	return Math.max.apply(null, arr);
}
function MinNum(arr) {
	return Math.min.apply(null, arr);
}
function AverageNum(arr) {
	var sum = eval(arr.join("+"));
    var svg = (sum / arr.length * 100) / 100;
	return svg;
}
function SumNum(arr) {
	var sum = eval(arr.join("+"));
	return sum;
}


// 第二種方法
var arr = [25,28,8,65,25,32,40,68];
console.log("最大值爲:"+arr.max());
console.log("最小值爲:"+arr.min());
console.log("和爲:"+arr.sum());
console.log("平均值爲:"+arr.avg());


function cacl(arr, callback) {
    var ret; 
    for (var i = 0; i < arr.length; i++) {
        ret = callback(arr[i], ret);
    }
    return ret;
}
Array.prototype.max = function () {
    return cacl(this, function (item, max) {
        if (!(max > item)) {
            return item;
        } else {
            return max;
        }
    });
};
Array.prototype.min = function () {
    return cacl(this, function (item, min) {
        if (!(min < item)) {
            return item;
        } else {
            return min;
        }
    });
};
Array.prototype.sum = function () {
    return cacl(this, function (item, sum) {
        if (typeof (sum) == 'undefined') {
            return item;
        } else {
            return sum += item;
        }
    });
};
Array.prototype.avg = function () {
    if (this.length == 0) {
        return 0;
    }
    return this.sum(this) / this.length;
};

3、數組排序方式

       3.1 JavaScript的sort()方法

var arr = [25,28,8,65,25,32,40,68];
arr.sort(compare);
console.log(arr);
function compare(val1,val2){
	return val1-val2;
};

  (1)sort()方法按照升序排列數組項,會調用每個數組項的toString()轉型方法,然後比較得到的字符串。

  (2)toString()方法是把布爾值或BooleanObject轉換爲字符串,並返回結果。

  (3)compare()函數方法是一個比較函數,作爲sort()方法的參數。

  3.2 冒泡排序(從後向前)

var arr = [25,28,8,65,25,32,40,68];
sort(arr);
function sort(arr){
    for(var j=0;j<arr.length-1;j++){
    //兩兩比較,如果前一個比後一個大,則交換位置。
       for(var i=0;i<arr.length-1-j;i++){
            if(arr[i]>arr[i+1]){
                var temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
        } 
    }
}

  (1)比較相鄰的元素。如果第一個比第二個大,就交換他們兩個位置。
  (2)對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
  (3)針對所有的元素重複以上的步驟,除了最後一個。
  (4)持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

4、數組裏面的元素出現次數

var arr = [1,2,5,2,5,2,5];  
console.log(arrNumber(arr));  //輸出{1: 1, 2: 3, 5: 3}  
function arrNumber(arr){  
      var arr_number = {};  
      for(var i = 0 ; i < arr.length ; i++){  
          if(arr_number[arr[i]]){  
              arr_number[arr[i]]++  
          }  
          else{  
              arr_number[arr[i]] = 1 ;  
          }  
      }  
      return arr_number ;  
}  
  

5、數組去重

var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a'];
console.log(unique(arr))

去重之後的數組

以上寫的關於數組方面的方法,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果對你有用 點贊評論收藏 加關注^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章