JS中關於陣列的方法(改變 不改變原陣列)

2021-10-13 10:39:00 字數 4800 閱讀 6946

pop():刪除 arrayobject 的最後乙個元素,把陣列長度減 1,並且返回它刪除的元素的值。如果陣列已經為空,則 pop() 不 改變陣列,並返回 undefined 值。arrayobject.pop()

push() 方法可把它的引數順序新增到 arrayobject 的尾部。它直接修改 arrayobject,而不是建立乙個新的陣列,返回當前別修改的原陣列的長度arrayobject.push(newelement1,newelement2,….,newelementx) 。

reverse()該方法會改變原來的陣列----將原來的陣列倒序,而不會建立新的陣列。arrayobject.reverse()。

shift():陣列的第乙個元素從其中刪除,並返回第乙個元素的值,如果陣列是空的,那麼 shift() 方法將不進行任何操作,如果是乙個空陣列,返回undefined,如果不是,則返回被刪除的元素

unshift() 方法可向陣列的開頭新增乙個或更多元素,並返回新的長度。arrayobject.unshift(newelement1,newelement2,….,newelementx)返回arrayobject 的新長度

sort()

對陣列的引用。請注意,陣列在原陣列上進行排序,不生成副本。arrayobject.sort(sortby) (如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。要實現這一點,首先應把陣列的元素都轉換成字串(如有必要),以便進行比較。

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

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

若 a 等於 b,則返回 0。

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

-

如果說不提供任何的引數,則根據預設規則來進行排序

(根據unicode來進行排序)

- 如果提供引數(函式),我們可以指定排序的規則

a 和 b代表兩個在比較的值

如果 a-b 的結果

​ 大於0 :b 排到 a 前面

​ 小於0:a 排到 b 前面

​ 等於0:a 和 b 的位置不變

sp在這裡插入**片lice()方法可刪除從 index 處開始的零個或多個元素,並且用引數列表中宣告的乙個或多個值來替換那些被刪除的元素。

-

splice

(start[,num,item1,item2...])

- start:刪除的起始位置

如果start大於length,就是不刪除。

如果是乙個負數

(負數的絕對值超過了length,則起始位置被設定為length),

從右到左查詢對應的起始位置length +

(start)

- num:可選,預設刪除到陣列的末尾。表示刪除的個數

如果小於0,或者是nan,則當做0進行處理,不刪除任何元素

- item1,item2... 從刪除的位置,新增第二個引數以後的內容

返回值是所有刪除的元素,組成的陣列,如果沒有刪除任何元素,將會得到乙個空陣列

如果從 arrayobject 中刪除了元素,則返回的是含有被刪除的元素的陣列

arrayobject.

splice

(index,howmany,item1,….

.,itemx)

reverse(),將陣列中元素顛倒過來。返回乙個新的陣列,會改變原有的陣列。

var arr =

['a'

,'b'

,'c'];

console.

log(arr.

reverse()

);console.

log(arr)

;

concat():用於連線兩個或多個陣列,僅會返回被連線陣列的乙個副本,arrayobject.concat(arrayx,arrayx,……,arrayx)

join():返回乙個字串。該字串是通過把 arrayobject 的每個元素轉換為字串,然後把這些字串連線起來,arrayobject.join(separator)

slice():如果陣列是空的arrayobject.slice(start,end) 方法可從已有的陣列中返回選定的元素。slice(1)表示slice(1,末尾)

slice

(begin,end)

用於擷取陣列中的內容,返回乙個新陣列

- begin

- 如果不給,預設為0

- 擷取的起始位置

- 如果值超過了length,就會返回乙個空陣列給你

- 如果是乙個負數(負數的絕對值超過了length,就會預設從0開始擷取),

- 那就說明從倒數第begin開始擷取length + begin

- end

- 如果不給,預設到陣列結尾

- 控制擷取的結束位置

- 如果小於(從位置上來說)bengin,會得到乙個空字串

- 如果是負數(如果負數的絕對值超過了length,那麼就會得到乙個空字串),

- 那麼就說明從倒數第end個結束。

- 如果超過了length,預設也只到陣列的結尾位置

begin是包含在內的,end是不包含在擷取範圍內

tostring():arrayobject 的字串表示。返回值與沒有引數的 join() 方法返回的字串相同arrayobject.tostring()

indexof、lastindexof,不會改變原陣列,返回查詢原陣列的索引

indexof

(searchvalue[

,fromindex]

)查詢目標字串中,是否包含searchvalue,如果包含,返回第一次出現的索引,如果不包含,

返回-1

- searchvalue 要查詢的值

- fromindex 查詢的起始位置,如果不填,預設為0

如果大於或者等於length,則返回-

1 如果說是乙個負數(如果這個負數的絕對值超過length,則fromindex為0),

根據倒數來確認查詢的位置

length + fromindex

lastindexof

(searchvalue[

,fromindex]

)返回陣列中指定的值最後一次出現的位置,如果不存在,則返回-

1 fromindex

搜尋的起始位置,預設為length

如果大於或者等於length,則為length

如果是乙個負數,則倒數找到對應的起始位置

length - fromindex

如果負數的絕對值大於length,則返回 -

1

array.reduce(function(total, currentvalue, currentindex, arr), initialvalue) reduce() 方法接收乙個函式作為累加器,陣列中的每個值(從左到右)開始縮減,最終計算為乙個值。

filter() 方法建立乙個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。array.filter(function(currentvalue,index,arr), thisvalue)

json.parse(json.stringify()),深度拷貝,也不會改變原陣列。

arr.foreach(callback[,thisarg])

對陣列中的每乙個元素,執行一次提供的函式

-

callback

(ele) 函式

- ele :迴圈過程中的每一位元素

- index: 當前迴圈的元素對應的下標值

- arr :呼叫foreach的當前陣列

- thisarg: 控制當前callback中的this指向

該方法返回值是undefined

arr.reduce(callback[,initvalue])

對陣列中的每乙個元素執行callback函式,將結果根據callback函式中的條件,返回單個值。

- callback :執行的函式

- result 結果

- ele :當前正在迴圈的元素

- index :當前正在迴圈的元素對應的索引值

- initvalue 可選。對於result進行初始化;

1020

1undefined 4

2undefined 50

3undefined 60

4undefined 75

5undefined 3

6undefined的出現是因為我們沒有把結果return給result接受

some(callback[,thisary])

測試陣列中是否至少有乙個元素通過了指定函式的測試,結果返回布林值

- callback 用於測試的函式

- ele:陣列迴圈中的元素

- index:元素對應下標

- array:當前正在操作的陣列

- thisary:決定callback中的this指向

every(callback[,thisary])

測試陣列中所有元素都通過了指定函式的測試,結果返回布林值

總是被會不會改變原陣列困擾,記錄一下,希望也可以幫助到大家

js陣列方法之改變或不改變原陣列

pop 將引數從陣列尾部刪除 unshift 將引數新增到陣列頭部 shift 將引數從陣列頭部刪除 reverse 陣列倒序 sort 陣列排序 var arr 2 1,3 4,15 11,14 12 arr.sort a,b a b 1,2,3,4,11,12,14,15 arr.sort a,...

改變和不改變原有陣列的方法

push 向陣列尾部新增元素 pop 刪除陣列的最後乙個元素,返回刪除的元素 reverse 反轉陣列中的元素順序 shift 刪除陣列中的第乙個元素 unshift 向陣列的開頭新增元素 sort 在源陣列上進行排序,不生成副本 splice index,n 刪除從index 包含 開始的n個元素...

js引用複製如何改變複製陣列不改變原陣列

我們需要知道的是object和array型別的變數為引用型別,也就是說其儲存的實際上並不是具體的值而是乙個指向堆記憶體的位址。因此當我們把乙個引用型別如 陣列 賦值給另乙個變數時,實際上是把另乙個變數指向了與之相同的位址,當我們改變其中乙個時,實際上改變了堆記憶體中的儲存內容 相應的所有指向該位址的...