ES6 數組、字符串操作

一、find()是一個查找回調函數,用來查找目標元素,找到數組中符合當前搜索規則的第一個元素,返回它,並且終止搜索。找不到返回undefined。

    查找函數有三個參數。
    value:每一次迭代查找的數組元素。
    index:每一次迭代查找的數組元素索引。
    arr:被查找的數組。
    [1, 2, 3, 4].find((value, index, arr) => {
        return  value > 3
    }) //4
    [1,2,3,4].find(value =>typeof value > 4) //undefined

二、findIndex()是一個查找回調函數,用來查找目標元素,找到數組中符合當前搜索規則的第一個元素,返回它的下標,終止搜索。找不到就返回-1。

    查找函數有三個參數。
    value:每一次迭代查找的數組元素。
    index:每一次迭代查找的數組元素索引。
    arr:被查找的數組。
    [1, 2, 3, 4].findIndex((value, index, arr) => {
            return value > 3
    }) //3
    [1,2,3,4].findIndex(value =>typeof value > 4) //-1

三、fill()是一個替換函數,用新元素替換掉數組內的元素,可以指定替換下標範圍。

    value:填充值。
    start:填充起始位置,可以省略。
    end:填充結束位置,可以省略,實際結束位置是end-1。
    arr.fill(value, start, end)
    [1,2,3,4,5].fill(7, 1, 3); //[1,7,7,7,5]

四、copyWithin()是一個複製函數,在當前數組內部,將指定位置的成員複製到其他位置(會覆蓋原有成員),然後返回當前數組。也就是說,使用這個方法,會修改當前數組。

    target (必需):從該位置開始替換數據。
    start (可選):從該位置開始讀取數據,默認爲 0 。如果爲負值,表示倒數。
    end (可選):到該位置前停止讀取數據,默認等於數組長度。如果爲負值,表示倒數。
    arr.copyWithin(target, start = 0, end = this.length)
    [1, 2, 3, 4, 5].copyWithin(0, 3, 4);  、 [1, 2, 3, 4, 5].copyWithin(0, -2, -1);  
    //[4,2,3,4,5]將3號位複製到0號位

五、push()方法可向數組的末尾添加一個或多個元素,並返回新的長度。

    let arr = [1,2,3];
    var les = arr.push('a');
    //arr = [1,2,3,'a']
    //les = 4

六、unshift()方法是向數組的開頭添加一個或多個元素,並且返回新的長度。

    let arr = Array.of(1,2,3);
    let res = arr.unshift('a');
    //arr = ['a', 1, 2, 3] 、res = 4

七、pop()方法用於刪除並返回數組的最後一個元素。如果數組是空的,pop()方法將不進行任何操作,返回undefined的值。

    let arr = ['a','b','c'];
  let resEle = arr.pop();
    //arr = [ 'a',' b' ] 、resEle = c

八、shift()方法用於刪除並返回數組的第一個元素。如果數組是空的,shift()方法將不進行任何操作,返回undefined的值。

    let arr = ['a','b','c'];
    let res = arr.shift();
    //arr = ['b','c'] 、res = a

九、concat()方法用於連接兩個或多個數組。該方法不會改變現有的數組,而僅僅會返回被連接數組的一個副本。

    let arr = [1,2,3];
    let arr2 = [1,2,3];
    let resArr = arr.concat(arr2);
    //arr = [1,2,3] 、arr2 = [1,2,3] 、resArr = [1,2,3,1,2,3]

十、join()方法用於把數組中的所有元素放入一個字符串。元素是通過指定的分隔符進行分隔的。

    let arr = [1,2,3];
    let resStr = arr.join(",");
    //arr = [ 1, 2, 3 ] 、resStr = 1,2,3

十一、sort()方法用於對數組的元素進行排序。

    排序不是按整型大小,而是字符串對比,取第一個字符的ANSI碼對比,小的排前面,相同的話取第二個字符再比:
    let arr = Array.of(3, 11, 8);
    let res = arr.sort();
    //arr = [ 11, 3, 8 ] 、res = [11, 3, 8]
    要按整型數值比較,可以這樣:
    let arr = Array.of(3, 11, 8);
    let res = arr.sort((a, b) => a - b);
    //arr = [ 3, 8, 11 ] 、res = [3, 8, 11]

十二、reverse()方法用於顛倒數組中元素的順序。

    let arr = Array.of(3, 11, 8, 9);
    let res = arr.reverse();
    //arr = [ 9, 8, 11, 3 ] 、res = [9, 8, 11, 3]

十三、Array.of()與Array()的異同,生成數組,當傳入單個參數時,Array()的行爲表現的不統一。Array.of的行爲很統一。

    Array.of() // []
    Array.of(3) // [ 3 ]
    Array.of(3, 11, 8) // [ 3, 11, 8 ]
    Array.of(undefined) // [undefined]
    Array() // []
    Array(3) // [ , ,  ]
    Array(3, 11, 8) // [ 3, 11, 8 ]

十四、splice()方法用於刪除元素/添加新元素。

    函數有三個參數:
    start: 開始操作的索引
    deleteCount:要移除的數組元素的個數
    item:要添加進數組的元素,如果不指定,則splice只刪除數組元素
    array.splice(start,deleteCount,item);

十五、slice()方法用於複製數組元素到新數組。

    函數有二個參數:
    start: 開始操作的索引
    end:結束操作的索引
    注:start <= newArray < end
    array.slice(start, end)
    let arr = Array.of(1,2,3,4,5);
    let res = arr.slice(1,3);
    //arr = [1,2,3,4,5] 、res = [2,3]

十六、includes()方法用於從一維數組或字符串中查找某指定的值,如果有,則返回true,否則false。

    方法有二個參數:
    value:查找的值
    start(可選):開始向後查詢的索引,
    arr.includes(value, start);

十七、startsWith()方法用於從字符串中正序查找某指定的值,如果有,則返回true,否則false。

    方法有二個參數:
    walue:查找的值
    start(可選):開始向後查詢的索引
    arr.startsWith(value,start);

十八、endsWith()方法用於從字符串中倒序查找某指定的值,如果有,則返回true,否則false。

    方法有二個參數:
    value:查找的值
    end(可選):開始向前查詢的索引(倒序的索引)
    arr.endsWith(value,end);

十九、indexOf()方法用於從一維數組或字符串中查詢某指定的值,如果有,則返回元素所在索引,否則返回-1。

    方法有二個參數:
    value:查找的值
    start(可選):開始查詢的索引位置(默認正序查詢,負值倒序查詢)
    arr.indexOf(value,start);

二十、lastIndexOf()方法用於從一維數組或字符串中倒序查詢某指定的值,如果有,則返回元素所在索引,否則返回-1。

    方法有二個參數:
    value:查詢的值
    start(可選):開始查詢的索引位置(倒序索引位置)
    arr.lastIndexOf(value,start);

二一、forEach()方法用於遍歷數組。

    函數有三個參數:
    value:表示當前項的值,
    key:表示當前索引,
    item:表示數組本身
    array.forEach((value, key, item) => {})

二二、every()和 some()方法用於確定數組的所有成員是否滿足指定的測試。

    every()一假即假,必須所有都返回true纔會返回true;
    some()一真即真,只要其中一個爲true 就會返回true ;
    方法有三個參數:
    value:表示當前項的值;
    key:表示當前的索引;
    item:表示數組本身
    const arr = [
        {name:"Apple",ram:8},
        {name:"IBM",ram:4},
        {name:"Acer",ram:32},
    ];
    var result= arr.every((value,key,item) => {
            return value.ram > 16
    })   //false;
    var some = arr.some((value,key,item) => {
            return value.ram > 16
    })   //true

let和const都能夠聲明塊級作用域,都是在當前塊內有效,執行到塊外會被銷燬,也不存在變量提升(TDZ)。
let的特點是不會變量提升,而是被鎖在當前塊中。
const 聲明常量,一旦聲明,不可更改,而且常量必須初始化賦值。 const雖然是常量,不允許修改默認賦值,但如果定義的是對象Object,那麼可以修改對象內部的屬性值。

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