《javascript高階程式設計》筆記 陣列方法

2021-09-16 12:51:38 字數 4949 閱讀 9320

join()能夠將陣列用指定的字元分割成字串

方法用法

變數的值

表示式的值

假設 arr = [1,2,3]

join

arr.join()

[1,2,3]

"1,2,3"

-arr.join(undefined)

[1,2,3]

"1,2,3"

-arr.join("-")

[1,2,3]

"1-2-3"

-arr.join(null)

[1,2,3]

"1null2null3"

-arr.join({})

[1,2,3]

"1[object object]2[object object]3"

結論:1.不給 join()方法傳入任何值,或者給它傳入 undefined,則使用逗號作為分隔符;

2.join()會將傳入的引數隱式轉換成字串形式

3.如果陣列中的某一項的值是 null 或者 undefined,那麼返回的結果中以空字串表示,tostring()也遵循該準則[1,2,undefined,3].join() ==> "1,2,,3"

tostring() / tolocalestring() 也能夠將陣列轉換成字串;

alert() 方法會隱式呼叫tostring()方法

呼叫陣列的 tostring() 方法會返回由陣列中每個值的字串形式拼接而成的乙個以逗號分隔的字串;

當呼叫陣列的 tolocalestring() 方法時,它也會建立乙個陣列值的以逗號分隔的字串。而與之前方法唯一的不同之處在於,這一次為了取得每一項的值,呼叫的是每一項的 tolocalestring() 方法,而不是 tostring() 方法,下面的例子可以解釋這一現象:

var person1 = ,

tostring : function() };

var person2 = ,

tostring : function() };

var people = [person1, person2];

alert(people);

alert(people.tostring());

alert(people.tolocalestring());

//nicholas,greg

//nicholas,greg

//nikolaos,grigorios

1.堆疊方法

方法用法變數的值

表示式的值

假設 arr = [1,2,3]

push

arr.push(4,5)

[1,2,3,5]4-

接收任意數量的引數,把它們逐個新增到陣列末尾,並返回修改後陣列的長度

poparr.pop()

[1,2]3-

arr.pop(123)

[1,2]3-

從陣列末尾移除最後一項,減少陣列的 length 值,然後返回移除的項(有參忽略)

unshift

arr.unshift(4,5)

[4,5,1,2,3]5-

接收任意數量的引數,把它們逐個新增到陣列首端,並返回修改後陣列的長度

shift

arr.shift()

[2,3]1-

從陣列首端移除第一項,減少陣列的 length 值,然後返回移除的項(有參忽略)

2.concat方法

concat()方法可以基於當前陣列中的所有項建立乙個新陣列。具體來說,這個方法會先建立當前陣列乙個副本,然後將接收到的引數新增到這個副本的末尾,最後返回新構建的陣列。
1.在沒有給 concat()方法傳遞引數的情況下,它只是複製當前陣列並返回副本。

2.如果傳遞給 concat()方法的是一或多個陣列,則該方法會將這些陣列中的每一項都新增到結果陣列中。

3.如果傳遞的值不是陣列,這些值就會被簡單地新增到結果陣列的末尾

4.arr === arr.concat() 為false

方法用法變數的值

表示式的值

假設 arr = [1,2,3]

concat

arr.concat()

[1,2,3]

[1,2,3]

-arr.concat(4,5)

[1,2,3]

[1,2,3,4,5]

-arr.concat(4,5,[6,7])

[1,2,3]

[1,2,3,4,5,6,7]

3.slice方法

slice()方法用於陣列的擷取,可以接受一或兩個引數,即要返回項的起始和結束位置;

1.沒有引數時,會建立乙個副本,但arr !== arr.slice()

1.在只有乙個引數的情況下,slice()方法返回從該引數指定位置開始到當前陣列末尾的所有項。

2.如果有兩個引數,該方法返回起始和結束位置之間的項,但不包括結束位置的項

3.如果 slice()方法的引數中有乙個負數,則用陣列長度加上該數來確定相應的位置

4.如果結束位置小於起始位置,則返回空陣列。

方法用法

變數的值

表示式的值

假設 arr = [1,2,3,4,5]

slice

arr.slice()

[1,2,3,4,5]

[1,2,3,4,5]

-arr.slice(1)

[1,2,3,4,5]

[2,3,4,5]

-arr.slice(1,4)

[1,2,3,4,5]

[2,3,4]

-arr.slice(-2,-1)

[1,2,3,4,5]

[4]-

arr.slice(4,3)

[1,2,3,4,5]

4.splice方法

splice(刪除的第一項索引,刪除元素個數,插入的內容...)

splice()的主要用途是向陣列的中部插入項,但使用這種方法的方式則有如下 3 種:

1.刪除:可以刪除任意數量的項,只需指定 2 個引數:要刪除的第一項的位置和要刪除的項數

2.插入:可以向指定位置插入任意數量的項,只需提供 3 個引數:起始位置、0(要刪除的項數)和要插入的項。如果要插入多個項,可以再傳入第

四、第五,以至任意多個項

3.替換:可以向指定位置插入任意數量的項,且同時刪除任意數量的項,只需指定 3 個引數:起始位置、要刪除的項數和要插入的任意數量的項。插入的項數不必與刪除的項數相等

splice()方法始終都會返回乙個陣列,該陣列中包含從原始陣列中刪除的項(如果沒有刪除任何 項,則返回乙個空陣列)

方法用法變數的值

表示式的值

假設 arr = [1,2,3,4,5]

splice

arr.splice()

[1,2,3,4,5]

-arr.splice(1)

[2,3,4,5]

[1]-

arr.splice(1,2)

[1,4,5]

[2,3]

-arr.splice(-2,2)

[1,2,3]

[4,5]

-arr.splice(1,2,"a","b","c","插入")

[1,"a","b","c","插入",4,5]

[2,3]

-arr.splice(1,1,"替代")

[1,"替代",3,4,5]

[2]1.reverse()方法

陣列反轉,陣列自身改變,並返回反轉後的值

方法用法變數的值

表示式的值

假設 arr = [1,2,3,4,5]

reverse

arr.reverse()

[5,4,3,2,1]

[5,4,3,2,1]

2.sort()方法

參考:js中sort()方法的用法,引數以及排序原理

在預設情況下(沒有引數),sort()方法按公升序排列陣列項——即最小的值位於最前面,最大的值排在最後面。 為了實現排序,sort()方法會呼叫每個陣列項的 tostring()轉型方法,然後比較得到的字串,以確定如何排序。即使陣列中的每一項都是數值,sort()方法比較的也是字串
因此,會出現下面這種情況:

var arr1 = ["george", "john", "thomas", "james", "adrew", "martin"];

arr.sort(); // ["adrew", "george", "james", "john", "martin", "thomas"]

var arr2 = ["10", "5", "40", "25", "1000", "1"];

arr.sort(); // ["1", "10", "1000", "25", "40", "5"]

如果想按照其他標準進行排序,就需要提供比較函式,該函式要比較兩個值,然後返回乙個用於說明這兩個值的相對順序的數字。比較函式應該具有兩個引數 a 和 b,其返回值如下:

若 a 小於 b,在排序後的陣列中 a 應該出現在 b 之前,則返回乙個小於 0 的值。

若 a 等於 b,則返回 0。

若 a 大於 b,則返回乙個大於 0 的值。

JavaScript高階程式設計

ecmascript有5種基本型別資料 另外還有一種複雜的資料型別 typeof就是用來檢測變數的資料型別的,typeof可能會返回以下值 typeof操作符在檢測引用型別的值時,總是會返回object,所以用處不大。instanceof用來檢測物件型別的,返回值是 true false。例如 pe...

JavaScript高階程式設計 this

在函式中this到底取何值,是在函式真正被呼叫執行的時候確定的,函式定義的時候確定不了 因為this的取值是執行上下文環境的一部分,每次呼叫函式,都會產生乙個新的執行上下文環境。所謂建構函式就是用來new物件的函式。其實嚴格來說,所有的函式都可以new乙個物件,但是有些函式的定義是為了new乙個物件...

javascript 高階程式設計 二

這裡我們直接進入主題 在js剛剛開始的時候,必須面臨乙個問題,那就是如何使的js的載入和執行不會影響web核心語言html的展示效果,和html和諧共存。在這個背景下 2 xhtml中的應用 在html中如果字串,那麼html就會認為js指令碼已經結束所以會產生乙個錯誤用一下 來替換 來替換aler...