文章出處

/** 刪除數組中指定索引的數據 **/

Array.prototype.deleteAt = function (index) {
    if (index < 0) {
        return this;
    }
    // 截取要刪除索引之前的值,然后和之后的值合并。
    return arr.slice(0,index).concat(arr.slice(index+1));
}

/** 數組洗牌 **/

Array.prototype.random = function () {
    var tempArr = [], me = this, t;
    // 如果當前數組的len大于0的話執行
    while (me.length > 0) {
        // 讓當前數組的長度乘以隨機數,避免是小數,取整   因為隨機數是一個小于0的數,所以乘以數組的長度最大只會是數組的長
        t = Math.floor(Math.random() * me.length);
        // 通過一個臨時數組保存那個隨機數里面的數組值。
        tempArr[tempArr.length] = me[t];
        // 刪除那個已經添加到臨時數組里面的值。
        me.splice(t,1);
    }
    return tempArr;
    // 原理,從原數組中隨機抽出一個數添加到臨時數組中,然后刪除將原數組中抽取出來的那個值。
}
Array.prototype.orderRandom = function () {
    return this.sort(function (a,b) {
        return Math.random() > 0.5 ? a<b : a>b;
    });
       // 因為sort函數會將數組中的前一個值和后一個值循環進行比較,根據排序的規則進行交換位置,然后我們可以通過一個隨機數判斷它是否大于0.5一半的值,如果大于就讓它怎么樣排序,否則怎么樣排序,總之不要讓這個排序一樣。
}

/** 數字數組排序 **/

Array.prototype.sortNum = function (i) {
    if (!i) {
        i = 0;
    }
    if (i == 1) {
        return this.sort(function (a, b) {
            return b - a;
        });
    }
    return this.sort(function (a, b) {
        return a - b;
    });
    // 如果傳入的值小于0等于0則按從小到大排序,如果等于1從大到小排序。
}

/** 獲取數字數組中的最大項 **/

Array.prototype.getMax = function () {
    return this.sortNum(1)[0];
    // 從大到小排序,然后獲取第一位
}

/** 獲取數字數組中的最小項 **/

Array.prototype.getMin = function () {
    return this.sortNum(0)[0];
    // 從小到大排序,然后獲取第一位
}

/** 數組第一次出現指定元素的位置 **/   追夢子博客園

Array.prototype.indexOf = function (o) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == o) {
            // 如果找到這個值直接返回這個值,退出函數
            return i;
        }
    }
    // 找不到返回-1
    return -1;
}

/** 去除數組中的重復項 **/

Array.prototype.arrUnique = function () {
    var reset = [], done = {};
    // 創建一個數組和一個臨時對象,數組用來保存去掉重復以后的值,對象用來判斷
    for (var i = 0; i < this.length; i++) {
        // 創建一個變量,讓它等于當前數組索引的值
        var temp = this[i];
        // 如果這個對象的屬性沒有數組里面的值,就給這個對象添加這個數組的值
        if (!done[temp]) {
            done[temp] = true;
            // 把這個值添加到新數組中
            reset.push(temp);
        }
    }
    return reset;
    // 創建一個對象,然后讓這個對象的屬性等于數組的值,如果這個對象有這個值,那么說明是重復的那就補添加到新數組中。
}

 /** 去除數組中的重復項 **/

    var array = [2,4,9,4,3,4,6,5,9,10];
    var temp = [];
    var isTrue = null;
    // 添加一個臨時數組
    for(var i=0,len=array.length;i<len;i++){
        // 判斷這個臨時數組的長度,是不是0,如果是的話給它添加一個。
        if(temp.length!=0){
            // 拿這個臨時數組里面的每一個值來判斷里面的值和array里面的值相同。
            for(var k=0,len2=temp.length;k<len2;k++){
                // 定義一個開關,如果值相同就不讓它添加,否則才添加。
                isTrue = true;
                if(temp[k]===array[i]){
                        isTrue = false;
                        break;
                }
            }
            // 判斷是否為真
            if(isTrue){
                temp.push(array[i]);
            }
        }else{
            temp.push(array[i]);
        }
    }
    console.log(temp); //[2, 4, 9, 3, 6, 5, 10]

 


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()