javescript經驗文檔(Array篇)

數組去重

...set(array)去重

{
    let array = ['aa',12,'aa',16,12,'ab'];
    function dedupe(array) { //es6
        return [...new Set(array)] 
    }
    dedupe(array);
    //等價於
    Array.from(new Set(array));
}

array.filter()方法去重

{
    let array = ['aa',12,'aa',16,12,'ab'];
    array.filter((item, index) => {
        return array.indexOf(item) == index;
    });
}

數組翻轉

reverse()es6

{
    let arr = ['a','b','c',1,3];
    arr.reverse(); 
}

返回結果: [3, 1, "c", "b", "a"]數組

鏈接兩個或多個數組

concat() 方法

concat() 方法用於鏈接兩個或多個數組,該方法不會改變現有的數組,而僅僅會返回被鏈接數組的一個副本
arr0.concat(arr1, arr2, arr3, ......, arrx);
例:ui

{
    [1,2,3].concat(4,5)
    
    [1,2,3].concat([4,5],6)
    
    [1,2,3].concat([4,5],[6,7,8])
}

返回結果:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7, 8]code

... 方法

es6 擴展運算符,最簡單的寫法,一萬個推薦!!!排序

{
    let arr = ['1s','2s','3s',4];
    let arr2 = ['1a','2a'];
    console.log([...arr,...arr2]);
}

返回結果:["1s", "2s", "3s", 4, "1a", "2a"]遞歸

push() 方法

push()把一個或多個參數附加在數組末尾,返回數組長度。改變數組自身。字符串

{
    let a = ['a','b','v'];
    let b = ['c','d','g'];
    a.push(...b)
    console.log(a)
}

返回結果:["a", "b", "v", "c", "d", "g"]
注意: push()方法返回的是數組長度,如上示例,console.log(a.push(...b))返回值爲6string

unshift() 方法

unshift()把一個或多個參數插入到數組頭部,返回數組長度。改變數組自身。it

{
    let arr = [1, 2, 3];
    let count = arr.unshift(4, 5);

    console.log(count); 
    console.log(arr); 
}

返回結果:
5
[4, 5, 1, 2, 3]io

數組與字符串相互轉化

數組轉字符串

join()方法,Array.join(標識符)

{
    ['as2',12,'ss'].join('/');
}

返回結果:"as2/12/ss"

字符串轉數組

split()方法,string.split(標識符)

{
    "as2/12/ss".split('/')
}

返回結果:["as2", "12", "ss"]

數組刪除、插入、替換

arrayObject.splice(index,howmany,item1,.....,itemX)

參數描述:
index:必需。整數,規定添加/刪除項目的位置,使用負數可從數組結尾處規定位置。
howmany:必需。要刪除的項目數量。若是設置爲 0,則不會刪除項目。
item1, ..., itemX 可選。向數組添加的新項目。
返回值:
類型描述:Array 包含被刪除項目的新數組,若是有的話。
說明:splice() 方法可刪除從 index 處開始的零個或多個元素,而且用參數列表中聲明的一個或多個值來替換那些被刪除的元素。

若是從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數組。

splice插入操做

示例:在 aa 和 bb 之間插入 aabb

{
    let str = ['aa','bb',123,'sd13cx','jj',45];
    str.splice(1,0,'aabb');
    console.log(str)
}

返回結果:["aa", "aabb", "bb", 123, "sd13cx", "jj", 45]

拓展練習

在 aa 和 bb 之間批量插入 ab、aabb、aaabbb
{

let str = ['aa','bb',123,'sd13cx','jj',45];
str.splice(1,0,'ab','aabb','aaabbb');
console.log(str);

}
返回結果:["aa", "ab", "aabb", "aaabbb", "bb", 123, "sd13cx", "jj", 45]

深層拓展

es6方法,使用‘...’擴展運算符

{
    let str = ['aa','bb',123,'sd13cx','jj',45];
    let arr = ['ab','aabb','aaabbb'];
    //巧用es6 "..."
    str.splice(1,0,...arr);
    console.log(str);
}

splice替換操做

示例:把 123 替換爲 ccdd

{
    let str = ['aa','bb',123,'sd13cx','jj',45];
    str.splice(2,1,'ccdd');
    console.log(str)
}

返回結果:["aa", "bb", "ccdd", "sd13cx", "jj", 45]

拓展練習

把 123 替換爲 123四、12345

{
    let str = ['aa','bb',123,'sd13cx','jj',45];
    str.splice(2,1,1234,12345);
    console.log(str);
}

返回結果:["aa", "bb", 1234, 12345, "sd13cx", "jj", 45]

splice刪除操做

示例:把 123 刪除

{
    let str = ['aa','bb',123,'sd13cx','jj',45];
    str.splice(2,1);
    console.log(str)
}

delete刪除操做

{
    let arr = ['aaa',111,222];
    delete arr[1]
    console.log(arr,arr.length)
    //delete 只刪除值,不刪除引用空間
}

返回結果:["aaa", empty, 222] 3

數組排序

冒泡排序

{
    let array = [1,4,-8,-3,6,12,9,8];
    let bubbleSort = function(arr){
        for(let i = 0;i < arr.length-1;i++){
            for(let j = 0;j < arr.length-i-1;j++){
                if(arr[j] < arr[j+1]){
                    let temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        return arr;
    }
    bubbleSort(array);
}

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

快速排序排序

{
    //遞歸思想,兩邊快速的排序,冒泡排序的改進
    let array = [1,4,-8,-3,6,12,9,8];
    let quickSort = function(arr){
        if(arr.length <= 1){
            return arr;
        }
        let index = Math.floor(arr.length/2);
        let temp = arr.splice(index,1);
        let left = [],right = [];
        for(let item of arr){
            if(item < temp){
                left.push(item);
            }else{
                right.push(item);
            }
        }
        return quickSort(left).concat(temp,quickSort(right));
    }
    quickSort(array);
}

Math.floor(x)方法是向下取整,返回小於或等於x的最接近的整數。

splice(index,num,item)方法是向數組中添加項目,或是從數組中刪除項目,並返回被刪除的項目。

index是整數,被操做項目所在的位置(必須)
num是整數,要刪除的項目的數量,若是爲0,表示不刪除(必須)
item是向數組中添加的新項目,能夠是多個(可選)
push()方法是向數組末尾添加一個或多個新項目並返回新數組的長度

concat()方法鏈接兩個或多個數組,不會改變原有數組,返回一個新數組

相關文章
相關標籤/搜索