第五章引用類型(5.2 Array 類型筆記)6/29

5.2 Array 類型

5.2.2 轉換方法
toLocaleString() 、 toString() 和 valueOf() 方法
在這裏插入圖片描述
toLocaleString() 方法時,與前兩個方法唯一的不同之處,調用的是每一項的 toLocaleString() 方法,而不是 toString() 方法。請看下面這個例子。
在這裏插入圖片描述
數組繼承的 toLocaleString() 、 toString() 和 valueOf() 方法,在默認情況下都會以逗號分隔的字符串的形式返回數組項。使用 join() 方法,則可以使用不同的分隔符來構建這個字符串
在這裏插入圖片描述
5.2.3 棧方法
push() 方法可以接收任意數量的參數,把它們逐個添加到數組末尾,並返回修改後數組的長度。而
pop() 方法則從數組末尾移除最後一項,減少數組的 length 值,然後返回移除的項。
在這裏插入圖片描述
alert(colors);//red,green
5.2.4 隊列方法
shift()它能夠移除數組中的第一個項並返回該項,同時將數組長度減 1。
在這裏插入圖片描述
unshift()shift() 的用途相反,它能在數組前端添加任意個項並返回新數組的長度。
在這裏插入圖片描述
在這裏插入圖片描述
5.2.5 重排序方法
兩個可以直接用來重排序的方法: reverse()sort()
在這裏插入圖片描述
sort() 方法按升序排列數組項——即最小的值位於最前面,最大的值排在最後面。
在這裏插入圖片描述
在這裏插入圖片描述
在將比較函數傳遞到 sort() 方法之後,數值仍然保持了正確的升序。當然,也可以通過比較函數產生降序排序的結果,只要交換比較函數返回的值即可。
在這裏插入圖片描述

reverse()sort() 方法的返回值是經過排序之後的數組。

對於數值類型或者其 valueOf() 方法會返回數值類型的對象類型,可以使用一個更簡單的比較函數。這個函數只要用第二個值減第一個值即可。

function compare(value1, value2){
return value2 - value1;
}

5.2.6 操作方法
concat() 方法傳遞參數的情況下,它只是複製當前數組並返回副本。如果傳遞給 concat() 方法的是一或多個數組,則該方法會將這些數組中的每一項都添加到結果數組中。
在這裏插入圖片描述
slice() ,它能夠基於當前數組中的一或多個項創建一個新數組。

接受一或兩個參數,即要返回項的起始和結束位置。在只有一個參數的情況下, slice() 方法返回從該參數指定位置開始到當前數組末尾的所有項。

var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
alert(colors2); //green,blue,yellow,purple *從位置 1 開始複製*
alert(colors3); //green,blue,yellow *表示複製從位置 1 開始,到位置 3 結束*

如果 slice() 方法的參數中有一個負數,則用數組長度加上該數來確定相應的位置。例如,在一個包含 5 項的數組上調用 slice(-2,-1) 與調用 slice(3,4) 得到的結果相同。如果結束位置小於起始位置,則返回空數組。

splice() 方法,這個方法恐怕要算是最強大的數組方法了,它有很多種用法。
splice() 的主要用途是向數組的中部插入項,但使用這種方法的方式則有如下 3 種。

  1. 刪除:可以刪除任意數量的項,只需指定 2 個參數,要刪除的第一項的位置和要刪除的項數。例如, splice(0,2)會刪除數組中的前兩項。
  2. 插入:可以向指定位置插入任意數量的項,只需提供 3 個參數:起始位置、0(要刪除的項數)和要插入的項。如果要插入多個項,可以再傳入第四、第五,以至任意多個項。例如,splice(2,0,“red”,“green”) 會從當前數組的位置 2 開始插入字符串 “red” 和 “green” 。
  3. 替換:可以向指定位置插入任意數量的項,且同時刪除任意數量的項,只需指定 3 個參數:起
    始位置、要刪除的項數和要插入的任意數量的項。插入的項數不必與刪除的項數相等。例如,splice (2,1,“red”,“green”) 會刪除當前數組位置 2 的項,然後再從位置 2 開始插入字符串"red" 和 “green” 。
    在這裏插入圖片描述
    5.2.7 位置方法
    數組實例添加了兩個位置方法: indexOf()lastIndexOf()
    indexOf() 方法從數組的開頭(位置 0)開始向後查找,
    lastIndexOf() 方法則從數組的末尾開始向前查找。

這兩個方法都返回要查找的項在數組中的位置,或者在沒找到的情況下返回1。在比較第一個參數與數組中的每一項時,會使用全等操作符;也就是說,要求查找的項必須嚴格相等(就像使用===一樣)。

var numbers = [1,2,3,4,5,4,3,2,1];
alert(numbers.indexOf(4)); //3
alert(numbers.lastIndexOf(4)); //5
alert(numbers.indexOf(4, 4)); //5
alert(numbers.lastIndexOf(4, 4)); //3
var person = { name: "Nicholas" };
var people = [{ name: "Nicholas" }];
var morePeople = [person];
alert(people.indexOf(person)); //-1
alert(morePeople.indexOf(person)); //0

5.2.8 迭代方法

  1.  every() :對數組中的每一項運行給定函數,如果該函數對每一項都返回 true ,則返回 true 。
  2.  filter() :對數組中的每一項運行給定函數,返回該函數會返回 true 的項組成的數組。
  3.  forEach() :對數組中的每一項運行給定函數。這個方法沒有返回值。
  4.  map() :對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組。
  5.  some() :對數組中的每一項運行給定函數,如果該函數對任一項返回 true ,則返回 true 。
    在這裏插入圖片描述
    5.2.9 歸併方法
    新增了兩個歸併數組的方法: reduce() 和 reduceRight() 。這兩個方法都會迭代數組的所有項,然後構建一個最終返回的值。
    reduce() 方法從數組的第一項開始,逐個遍歷
    到最後。
    reduceRight() 則從數組的最後一項開始,向前遍歷到第一項。
    在這裏插入圖片描述
    第一次執行回調函數, prev 是 1, cur 是 2。第二次, prev 是 3(1 加 2 的結果), cur 是 3(數組的第三項)。這個過程會持續到把數組中的每一項都訪問一遍,最後返回結果。

在這裏插入圖片描述

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