首頁 web前端 js教程 js數組方法

js數組方法

Apr 04, 2018 am 11:35 AM
javascript 陣列 方法

這次的這篇文章的內容是js陣列方法,現在分享給大家,也可以給有需要的朋友做參考


陣列建立

JavaScript中建立陣列有兩種方式,第一種是使用 Array 建構子:

1

2

#3

var#arr1 = new Array(); //建立一個空數組

var arr2 = new Array(20); // 建立一個包含20項目的陣列

#var arr3 =  new Array("lily","lucy"##, "Tom"); // 建立一個包含3個字串的陣列

建立陣列的第二種基本方式是使用陣列字面量表示法:

#

在讀取和設定數組的值時,要使用方括號並提供相應值的基於 0 #的數字索引:

1

2

3

#var arr4 = []; #//建立一個空數組

var arr5 = [20]; #// 建立一個包含#1項目的陣列

var arr6 = ["lily","lucy","Tom"]; #// #建立一個包含3個字串的陣列

1

2

3

#4

var#arr6 = ["lily" ,"lucy","Tom"]; #// 建立一個包含3個字串的陣列

#alert(arr6[0]); //lily

arr6[1] = "mary"// #修改第二項為mary

arr6[3] = "sean"#; #//增加第四項為sean

JavaScript 中陣列的length屬性是可以修改的,看下面的範例:

如果需要判斷一個物件是不是數組對象,在ECMAScript 5之前,我們可以透過 instanceof Array#去判斷,但是instanceof 運算子的問題在於,它假定只有一個全域執行環境。如果網頁中包含多個框架,那麼實際上就存在兩個以上不同的全域執行環境,從而存在兩個以上不同版本的 Array 建構子。如果你從一個框架向另一個框架傳入一個數組,那麼傳入的數組與在第二個框架中原生創建的數組分別具有各自不同的構造函數。

ECMAScript 5 新增了 Array.isArray()方法。這個方法的目的是最終確定某個值到底是不是數組,而不管它是在哪個全域執行環境中建立的。

陣列方法

#下面開始介紹陣列的方法,陣列的方法有陣列原型方法,也有從object物件繼承來的方法,這裡我們只介紹陣列的原型方法,陣列原型方法主要有以下內容:

join()
push()
pop()
shift()
unshift()
sort()
reverse()
concat()
slice()
splice()
indexOf()
lastIndexOf() ES5新增)
forEach()
ES5新增)
map()
ES5新增)##filter( )
ES5新增)#every()
ES5 新增)some()
(ES5

reduce()



reduceRight()

ES5新增)

針對

ES5新增的方法瀏覽器支援情況:Opera 11+ Firefox 3.6 + 

Safari 5+ 

Chrome 8+ Internet Explorer 9+對於支援的瀏覽器版本,可以透過Array

原型擴充來實作。以下詳細介紹一下各個方法的基本功能。

##1

2

3

var arr = ["lily","lucy", "Tom"]; // 建立一個包含3個字串的陣列

arr[arr.length] = "sean"//##在下標為3處(也就是陣列尾部)加上一項"sean"

arr.length =  arr .length-1; 

//#將陣列的最後一項刪除

1

#join()

######join(separator ): ######將陣列的元素組起一個字串,以######separator######為分隔符,省略的話則用預設用逗號為分隔符,該方法只接收一個參數:即分隔符號。 ########################1############2######

3

4

var arr = [1,2,3];

console.log(arr.join()); // 1,2,3

console.log(arr.join("-")); ##// 1-2-3

console.log(arr); // [1, 2, 3](原始陣列不變)

#透過join()方法可以實作重複字串,只需傳入字串以及重複的次數,就能傳回重複後的字串,函數如下:

2push()#和pop()

#push(): 可以接收任意數量的參數,把它們逐一加到陣列結尾,並傳回修改後陣列的長度。  
pop()
:陣列末端移除最後一項,減少陣列的 length 值,然後傳回移除的項。

1

2

3

4

#5

function##repeatString(str, n) {

return new Array(n + 1).join(str);

#}

##console. log(repeatString(

"abc", 3)); // abcabcabcconsole.log(repeatString (

"Hi", 5)); // HiHiHiHiHi

1

#2

3

4

5

6

7

var arr = ["Lily","lucy","Tom"];

var count = arr.push("Jack"#,"Sean");

console.log(count); // 5

console.log(arr); 

########################1 ###// ["Lily",  "lucy", "Tom", "Jack", "Sean"]###############var##### ## #it​​em = arr.pop();############console.log(item); ######// Sean############console .log(arr); ######// ["Lily",  "lucy", "Tom", "Jack"]###################

3shift() unshift()

shift():刪除原始數組第一項,並傳回刪除元素的值;如果數組為空則回傳undefined  
unshift:
將參數加入原始陣列開頭,並傳回陣列的長度

這組方法和上面的push()#和pop()#方法剛好對應,一個是操作數組的開頭,一個是操作數組的結尾。

1

#2

3

4

5

6

7

var arr = ["Lily","lucy","Tom"];

var count = arr.unshift("Jack","Sean");

console.log(count); // 5

console.log(arr); 

########################1 ###//["Jack",  "Sean", "Lily", "lucy", "Tom"]###############var##### ## #it​​em = arr.shift();############console.log(item); ######// Jack############console .log(arr); ######// ["Sean",  "Lily", "lucy", "Tom"]##################

4sort()

sort() :依升序排列數組項——即最小的值位於最前面,最大的值排在最後面。

在排序時,sort()#方法會呼叫每個陣列項目的 toString()轉型方法,然後比較得到的字串,以確定如何排序。即使數組中的每一項都是數值, sort()方法比較的也是字串,因此會出現以下的這種情況:

#

為了解決上述問題,sort()方法可以接收一個比較函數作為參數,以便我們指定哪個值位於哪個值的前面。比較函數接收兩個參數,如果第一個參數應該位於第二個之前則傳回一個負數,如果兩個參數相等則傳回 0,如果第一個參數應該位於第二個之後則傳回一個正數。以下就是一個簡單的比較函數:

#1

2

3

#4

5

var## arr1 = ["a""d"##"c"# , "b"];

console.log(arr1.sort()); 

// [ "a",  "b", "c", "d"]

arr2 = [13, 24, 51, 3];

#console.log(arr2.sort()); 

// [13, 24, 3, 51]

console.log(arr2); 

// [13, 24, 3, 51](元數組被改變)

#

如果需要透過比較函數產生降序排序的結果,只要交換比較函數傳回的值即可:

#1

##2

#3

4

#5

6

7

8

#9

10

11

#function compare(value1, value2) {

if (value1 < 值2) {

##return -1;

#else if (value1 > value2) {

return 1;##} 

else {

#return

#0; }

}

#arr2 = [13, 24, 51, 3];

#console.log(arr2.sort(compare)); 

// [3, 13, 24, 51]

1

2

3

4

5

6

7

8

#9

10

#11

function compare(value1, value2) {

if (value1 < 值2 ) {

return 1;

else if (value1 > value2) {

##return## -1;

else {

# #return 0;

}

#}

arr2 = [13, 24, 51, 3];

console.log(arr2.sort(compare)); // [51, 24, 13, 3]

#5reverse()

reverse():反轉陣列項目的順序。

6concat()

concat() :將參數加入原始數組。這個方法會先建立目前陣列一個副本,然後將接收到的參數加到這個副本的結尾,最後再傳回新建置的陣列。在沒有給 concat()方法傳遞參數的情況下,它只是複製目前陣列並傳回副本。

1

#2

3

var arr = [13, 24, 51, 3];

#console.log(arr.reverse()); //[3, 51, 24, 13]

console.log( arr); //[3, 51, 24, 13](原始陣列改變##)

1

#2

3

4

#var arr = [1, 3,5,7];

var arrCopy =  arr.concat(9,[11,13]);

console.log(arrCopy); //[1, 3, 5, 7, 9, 11, 13]

#console.log(arr); // [1, 3, 5, 7](原始數組未修改)

#從上面測試結果可以發現:傳入的不是數組,則直接把參數加到數組後面,如果傳入的是數組,則將數組中的各個項會加入到數組中。但是如果傳入的是一個二維數組呢?

1

#2

3

var arrCopy2 =  arr.concat([9,[11,13]]);

console.log(arrCopy2); //[1, 3, 5, 7, 9,  Array[2]]

#console.log(arrCopy2[5]); //[11, 13]

上述程式碼中,arrCopy2陣列的第五項是一個包含兩個項目的數組,也就是說concat方法只能將傳入數組中的每一項加到數組中,如果傳入數組中有些項是數組,那麼也會把這一數組項當作一項添加到arrCopy2 中。

7slice()

slice() :傳回從原始數組指定開始下標到結束下標之間的項目所組成的新數組。 slice()方法可以接受一或兩個參數,也就是要傳回項目的起始和結束位置。在只有一個參數的情況下, slice()方法傳回從該參數指定位置開始到目前陣列末端的所有項目。如果有兩個參數,則該方法傳回起始和結束位置之間的項目——但不包含結束位置的項。

1

#2

3

4

5

6

7

8

9

10

#var arr = [1,3,5,7,9,11];

var arrCopy = arr.slice(1);

var arrCopy2 = arr.slice(1,4);

var#arrCopy3 =​​  arr.slice(1,-2);

var arrCopy4 =  arr.slice(-4,-1);

console.log( arr); //[1, 3, 5, 7, 9, 11](原數組沒變)

#console.log(arrCopy); //[3, 5, 7, 9, 11]

console.log(arrCopy2); //[3, 5, 7]

console.log(arrCopy3); //[3, 5, 7]

console.log(arrCopy4); //[5, 7, 9]

#

arrCopy只設定了一個參數,也就是起始下標示為1,所以傳回的陣列為下標 1(包含下標1)開始到陣列最後。  
arrCopy2
設定了兩個參數,返回起始下標(包括1)開始到終止下標(不包括4)的子陣列。  
arrCopy3
設定了兩個參數,終止下標為負數,當負數出現時,負數加上數組長度的值(6)來取代該位置的數,因此就是從1開始到4(不包含)的子數組。  
arrCopy4
中兩個參數都是負數,所以都加上陣列長度6轉換成正數,因此相當於slice(2,5)

8splice()

splice() :很強大的陣列方法,它有很多種用法,可以實現刪除、插入和替換。

刪除:可以刪除任意數量的項,只需指定 2 個參數:要刪除的第一項的位置和要刪除的項數。例如, splice(0,2)會刪除陣列中的前兩項。

插入:可以向指定位置插入任意數量的項,只需提供# 3 個參數:起始位置、 0(要刪除的項目數)和要插入的項目。例如,splice(2,0,4,6)會從目前陣列的位置 2 開始插入46
取代:可以將任意數量插入指定位置的項,並且同時刪除任意數量的項,只需指定 3 個參數:起始位置、要刪除的項數和要插入的任意數量的項。插入的項數不必與刪除的項數相等。例如,splice (2,1,4,6)會刪除目前陣列位置 2 的項,然後再從位置 2 開始插入46

splice()方法總是會傳回一個數組,該數組包含從原始數組中刪除的項,如果沒有刪除任何項,則傳回一個空數組。

1

#2

3

4

5

6

7

#

8

9

#10

var arr = [1,3,5,7,9,11];

##var arrRemoved =  arr.splice(0,2);

#console.log(arr); //[5, 7, 9, 11]

console.log(arrRemoved); //[1, 3]

var arrRemoved2 =  arr.splice(2,0,4,6);

console.log(arr); #/ / [5, 7, 4, 6, 9, 11]

console.log(arrRemoved2); ##// []

var arrRemoved3 =  arr.splice(1,1,2,4);

console.log(arr ); 

// [5, 2, 4, 4, 6, 9, 11]

console.log(arrRemoved3); 

# //[7]

#9##indexOf() lastIndexOf()#indexOf()

:接收兩個參數:要尋找的項目和(可選的)表示查找起點位置的索引。其中,從陣列的開頭(位置 0)開始向後尋找。  lastIndexOf:接收兩個參數:要尋找的項目和(可選的)表示尋找起點位置的索引。其中,
從陣列的結尾開始向前找到。 這兩個方法都會傳回要尋找的項目在陣列中的位置,或是在找不到的情況下傳回

-#1 。在比較第一個參數與陣列中的每一項時,會使用全等運算子。

1

10forEach()

forEach()## :對數組進行遍歷循環,對數組中的每一項運行給定函數。這個方法沒有回傳值。參數都是function類型,預設有傳參,參數分別為:遍歷的陣列內容;第對應的陣列索引,陣列本身。

#2

3

4

5

6

var

arr = [1,3,5,7,7,5,3,1];#console.log(arr.indexOf(5)); 

//2console.log(arr.lastIndexOf(5)); 

//5console.log(arr.indexOf(5,2)); 

//2 #console.log(arr.lastIndexOf(5,4)); 

#//2console.log(arr.indexOf(

"5")); //-1

1

#2

3

4

5

6

7

8

9

10

#var arr = [1, 2, 3, 4, 5];

arr .forEach(function(x, index, a){

console.log(x + '|' + index + '|' + (a === arr));

});

// 輸出為:

// 1|0|true

// 2|1|true

// 3|2|true

// 4|3|true

// 5|4|true

11map()

map():指# “映射,對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組。

下面程式碼利用map方法實作陣列中每個數字求平方。

#

12filter()

filter()過濾功能,陣列中的每一項運行給定函數,傳回滿足過濾條件組成的陣列。

1

#2

3

4

5

var arr = [1, 2, 3, 4, 5];

#var arr2 = arr .map(function(item){

##return# #it​​em*item;});

#console.log(arr2); 

//[1, 4, 9, 16, 25]

1

#2

3

4

5

var arr = [1, 2, 3, 4, 5, 6,  7, 8, 9, 10];

var arr2 = arr.filter(function(x, index) {

x < 10;

#return

index % 3 === 0 || x >=  8;

});

console.log(arr2); 

//[1, 4, 7, 8, 9, 10]

#13

every()

every()
:判斷數組中每一項都是否滿足條件,只有所有項都滿足條件,才會回傳

true

1#2 3

45

6

7

8

9 var

arr = [1, 2, 3, 4, 5];

var

arr2 = arr.every(

function

(x) {

##return
#########});#############console.log(arr2); ######// true###############var###### ###arr3 = arr.every(#########function######## #(x) {###############return###### ###x < 3;###########}); ############console.log(arr3); ######// false##################

14#some()

some() :判斷數組中是否存在滿足條件的項,只要有一個滿足條件,就會傳回true

15reduce()#和# reduceRight()

這兩個方法都會實作迭代數組的所有項,然後建立一個最終返回的值。 reduce()方法從陣列的第一項開始,逐一遍歷到最後。而 reduceRight()則從陣列的最後一項開始,向前遍歷到第一項。

這兩個方法都會接收兩個參數:一個在每一項上呼叫的函數和(可選的)作為歸併基礎的初始值。

傳給 reduce() reduceRight()的函數接收 4 個參數:前一個值、目前值、項目的索引和陣列物件。這個函數傳回的任何值都會作為第一個參數自動傳給下一項。第一次迭代發生在數組的第二項上,因此第一個參數是數組的第一項,第二個參數就是數組的第二項。

下面程式碼用reduce()實作陣列求和,陣列一開始加了一個初始值##10

1

#2

3

4

5

6

7

8

9

var arr = [1, 2, 3, 4, 5];

var arr2 = arr.some(function(x) {

##return x < 3;

});

#console.log(arr2); // true

var arr3 = arr.some(function(x) {

return x < 1;

##});

console.log(arr3); 

// false

1

#2

3

4

5

var values = [1,2,3,4,5];

var##sum = values .reduceRight(function(prev, cur, index, array){

return prev + cur;

},10);

console.log(sum); 

//25

#本文轉載自 http://www.jb51. net/article/87930.htm

相關推薦:##JS陣列排序

##js函數封裝


 


#

以上是js數組方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1272
29
C# 教程
1252
24
微信刪除的人如何找回(簡單教學告訴你如何恢復被刪除的聯絡人) 微信刪除的人如何找回(簡單教學告訴你如何恢復被刪除的聯絡人) May 01, 2024 pm 12:01 PM

而後悔莫及、人們常常會因為一些原因不小心刪除某些聯絡人、微信作為一款廣泛使用的社群軟體。幫助用戶解決這個問題,本文將介紹如何透過簡單的方法找回被刪除的聯絡人。 1.了解微信聯絡人刪除機制這為我們找回被刪除的聯絡人提供了可能性、微信中的聯絡人刪除機制是將其從通訊錄中移除,但並未完全刪除。 2.使用微信內建「通訊錄恢復」功能微信提供了「通訊錄恢復」節省時間和精力,使用者可以透過此功能快速找回先前刪除的聯絡人,功能。 3.進入微信設定頁面點選右下角,開啟微信應用程式「我」再點選右上角設定圖示、進入設定頁面,,

手機版龍蛋孵化方法大揭密(一步一步教你如何成功孵化手機版龍蛋) 手機版龍蛋孵化方法大揭密(一步一步教你如何成功孵化手機版龍蛋) May 04, 2024 pm 06:01 PM

手機遊戲成為了人們生活中不可或缺的一部分,隨著科技的發展。它以其可愛的龍蛋形象和有趣的孵化過程吸引了眾多玩家的關注,而其中一款備受矚目的遊戲就是手機版龍蛋。幫助玩家們在遊戲中更好地培養和成長自己的小龍,本文將向大家介紹手機版龍蛋的孵化方法。 1.選擇合適的龍蛋種類玩家需要仔細選擇自己喜歡並且適合自己的龍蛋種類,根據遊戲中提供的不同種類的龍蛋屬性和能力。 2.提升孵化機的等級玩家需要透過完成任務和收集道具來提升孵化機的等級,孵化機的等級決定了孵化速度和孵化成功率。 3.收集孵化所需的資源玩家需要在遊戲中

手機字體大小設定方法(輕鬆調整手機字體大小) 手機字體大小設定方法(輕鬆調整手機字體大小) May 07, 2024 pm 03:34 PM

字體大小的設定成為了重要的個人化需求,隨著手機成為人們日常生活的重要工具。以滿足不同使用者的需求、本文將介紹如何透過簡單的操作,提升手機使用體驗,調整手機字體大小。為什麼需要調整手機字體大小-調整字體大小可以使文字更清晰易讀-適合不同年齡段用戶的閱讀需求-方便視力不佳的用戶使用手機系統自帶字體大小設置功能-如何進入系統設置界面-在在設定介面中找到並進入"顯示"選項-找到"字體大小"選項並進行調整第三方應用調整字體大小-下載並安裝支援字體大小調整的應用程式-開啟應用程式並進入相關設定介面-根據個人

如何使用 foreach 迴圈移除 PHP 陣列中的重複元素? 如何使用 foreach 迴圈移除 PHP 陣列中的重複元素? Apr 27, 2024 am 11:33 AM

使用foreach循環移除PHP數組中重複元素的方法如下:遍歷數組,若元素已存在且當前位置不是第一個出現的位置,則刪除它。舉例而言,若資料庫查詢結果有重複記錄,可使用此方法移除,得到不含重複記錄的結果。

PHP 陣列鍵值翻轉:不同方法的效能比較分析 PHP 陣列鍵值翻轉:不同方法的效能比較分析 May 03, 2024 pm 09:03 PM

PHP數組鍵值翻轉方法效能比較顯示:array_flip()函數在大型數組(超過100萬個元素)下比for迴圈效能更優,耗時更短。手動翻轉鍵值的for迴圈方法耗時相對較長。

PHP數組深度複製的藝術:使用不同方法完美複製 PHP數組深度複製的藝術:使用不同方法完美複製 May 01, 2024 pm 12:30 PM

PHP中深度複製數組的方法包括:使用json_decode和json_encode進行JSON編碼和解碼。使用array_map和clone進行深度複製鍵和值的副本。使用serialize和unserialize進行序列化和反序列化。

PHP數組多維排序實戰:從簡單到複雜場景 PHP數組多維排序實戰:從簡單到複雜場景 Apr 29, 2024 pm 09:12 PM

多維數組排序可分為單列排序和嵌套排序。單列排序可使用array_multisort()函數依列排序;巢狀排序需要遞歸函數遍歷陣列並排序。實戰案例包括按產品名稱排序和按銷售量和價格複合排序。

PHP 數組分組函數在資料整理的應用 PHP 數組分組函數在資料整理的應用 May 04, 2024 pm 01:03 PM

PHP的array_group_by函數可依鍵或閉包函數將陣列中的元素分組,傳回關聯數組,其中鍵為組名,值是屬於該組的元素數組。

See all articles