日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS引用类型 -- Array类型

發(fā)布時間:2023/12/9 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS引用类型 -- Array类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ECMAScript數(shù)組與其他語言中的數(shù)組都是數(shù)據(jù)的有序列表,但與其他語言不同的是,ECMAScript數(shù)組的每一項可以保存任何類型的數(shù)據(jù)。而且ECMAScript數(shù)組的大小是可以動態(tài)調整的,即可以隨著數(shù)據(jù)的添加自動增長。

創(chuàng)建數(shù)組的基本方式有兩種:

第一種是使用Array構造函數(shù):

//1. 使用Array構造函數(shù) var colors = new Array();//2.如果預先知道數(shù)組要保存的項目數(shù)量,也可以給構造函數(shù)傳遞該數(shù)量,改數(shù)量會自動變成length的屬性值 var colors2 = new Array(20); alert(colors2.length); //20//3.也可以向Array構造函數(shù)傳遞數(shù)組中應該包含的項。 var colors3 = new Array("red", "blue", "green");//4.給構造函數(shù)傳遞一個值時,如果傳遞的是數(shù)值,表示該數(shù)組的長度。如果傳遞的是其他類型,則會創(chuàng)建包含那個值的數(shù)組 var colors4 = new Array(3); // 創(chuàng)建一個包含3項的數(shù)組 var colors5 = new Array("Greg"); //創(chuàng)建一個包含1項的數(shù)組//5. 在使用Array構造函數(shù)時也可以省略new操作符 var colors6 = Array(3); var names = Array("Greg");

第二種是使用數(shù)組字面量表示法: 數(shù)組字面量是由一對包含數(shù)組項的方括號表示,多個數(shù)組項之間以逗號隔開

var colors = ["red", "blue", "green"]; //創(chuàng)建一個包含三個字符串的數(shù)組 var names = []; //創(chuàng)建一個空數(shù)組//在讀取和設置數(shù)組的值時,要使用方括號并提供相應值的基于0的數(shù)字索引 alert(colors[0]); //red colors[2] = "black"; colors[3] = "brown"; //索引大于數(shù)組項時,自動增加一個 alert(colors.length); //4 colors[99] = "black"; alert(colors.length); //100

1.檢測數(shù)組

instanceof :

Array.isArray(): 確定某個值是否為數(shù)組

if(Array.isArray(colors)){alert("yes"); }

2.轉換方法

toString() 方法: 返回由數(shù)組中每個值的字符串形式拼接而成的一個以逗號分隔的字符串。

valueOf() 方法: 返回的還是數(shù)組。

var colors = ["red", "blue", "green"]; //創(chuàng)建一個包含三個字符串的數(shù)組 alert(colors.toString()); //red,blue,green alert(colors.valueOf()); //red,blue,green alert(colors); //red,blue,green

上述代碼顯示的調用了toString()和valueOf()方法,以便返回數(shù)組的字符串表示,每個值的字符串表示拼接成了一個字符串,中間以逗號隔開。最后一行代碼直接將數(shù)組傳遞給了alert()。由于alert()要接收字符串參數(shù),所以它會在后臺調用toString()方法,由此會得到與直接調用toString()方法相同的結果。

數(shù)組繼承的toLocaleString()、toString()和valueOf()方法,在默認情況下都會以逗號分隔的字符串形式返回數(shù)組項,如果使用join()方法,則可以使用不同的分隔符來構建這個字符串。join()方法只接收一個參數(shù),即分隔符的字符串。

var colors = ["red", "blue", "green"]; //創(chuàng)建一個包含三個字符串的數(shù)組 alert(colors.join("||")); //red||blue||green

3. 棧方法

ECMAScript數(shù)組也提供了一種讓數(shù)組的行為類似其他數(shù)據(jù)結構的方法。

棧是一種LIFO(Last-In-First-Out)的數(shù)據(jù)結構。也就是最新添加的項最早被移除。棧中項的插入(推入)和移除(彈出),只發(fā)生在一個位置上--- 棧的頂部。

push() 方法: 可以接受任意數(shù)量的參數(shù),把它們逐個添加到數(shù)組的末尾,并返回修改后數(shù)組的長度。

pop() 方法: 從數(shù)組末尾移除最后一項,減少數(shù)組的length值,然后返回移除的項。

var colors = ["red", "blue"]; var count = colors.push("green"); alert(count); //3 count = colors.push("black"); alert(count); //4var item = colors.pop(); alert(item); //black

4. 隊列方法

隊列數(shù)據(jù)結構的訪問規(guī)則是FIFO(First-In-First-Out)。隊列在列表的末端添加項,從列表的前端移除項。

push() 方法: 向數(shù)組末尾中添加項。

shift() 方法: 移除數(shù)組中的第一項并返回該項。

unshift() 方法: 在數(shù)組前端添加任意項并返回新數(shù)組的長度。

var colors = new Array(); var count = colors.push("red", "green"); alert(count); //2 count = colors.push("black"); alert(count); //3var item = colors.shift(); alert(item); //red count = colors.unshift("summer", "chen"); alert(count); //4 alert(colors); //summer,chen,green,black

5.重排序方法

數(shù)組中已經存在兩個可以直接用來排序的方法:

reverse() 方法: 反轉數(shù)組項的順序

sort(): 方法:在默認情況下,按升序排列數(shù)組項。sort()方法會調用每個數(shù)組項的toString()轉型方法,然后比較得到的字符串。

var values = [0, 1, 3, 15, 5, 10]; values.reverse(); alert(values); //10,5,15,3,1,0 values.sort(); alert(values); //0,1,10,15,3,5

sort()方法可以接收一個比較函數(shù)作為參數(shù)。

比較函數(shù)接收兩個參數(shù),如果第一個參數(shù)應該位于第二個之前——返回一個負數(shù);兩個參數(shù)相等——返回0;第一個參數(shù)該位于第二個之后——返回一個正數(shù)。

function compare(value1, value2){if(value1 < value2){return -1;}else if(value1 == value2){return 0;}else{return 1;} } var values = [0,15,10,5,1]; values.sort(compare); alert(values); //0,1,5,10,15

對于數(shù)值類型 或 其valueOf()方法會返回數(shù)值類型的對象類型,可以使用下列方法:

function compare(value1, value2){return value2 - value1; } var values = [0,15,10,5,1]; values.sort(compare); alert(values); //0,1,5,10,15

6.操作方法

concat() 方法: 基于當前數(shù)組中的所有項創(chuàng)建一個新數(shù)組。具體來說,這個方法會先創(chuàng)建當前數(shù)組的一個副本,然后講接收到的參數(shù)添加到這個副本的末尾,最后返回新構建的數(shù)組。在沒有給concat()方法傳遞參數(shù)的情況下,它只是復制當前數(shù)組并返回副本。如果傳遞給concat()方法的是一或多個數(shù)組,則該方法會將這些數(shù)組中的每一項都添加到結果數(shù)組中。如果傳遞的值不是數(shù)組,這些值就會簡單的添加到結果數(shù)組的末尾。

var colors = ["red", "green", "blue"]; var colors2 = colors.concat("yellow", ["black", "brown"]);alert(colors); //red,green,blue alert(colors2); //red,green,blue,yellow,black,brown

slice() 方法: 基于當前數(shù)組中的一個或多個項創(chuàng)建一個新數(shù)組。slice()方法可以接受一個或兩個參數(shù),即要返回項的起始和結束的位置。slice方法不會影響原始數(shù)組。

var colors = ["red", "green", "blue", "black", "brown"];//1. 在只有一個參數(shù)的情況下,slice方法返回從該參數(shù)位置開始到當前數(shù)組末尾的所有項 var colors2 = colors.slice(1); alert(colors2); //green,blue,black,brown//2.有兩個參數(shù),該方法返回起始位置和結束位置之間的項,不包括結束位置的項 var colors3 = colors.slice(1,3); alert(colors3); //green,bluevar colors4 = colors.slice(3,1); alert(colors4); //空數(shù)組var colors5 = colors.slice(1,1); alert(colors5); //空數(shù)組var colors6 = colors.slice(5); alert(colors6); //空數(shù)組var colors7 = colors.slice(3, 15); alert(colors7); //black,brown

splice()方法:主要用途是向數(shù)組中部插入項。改方法返回被刪除的項。

var colors = ["red", "green", "blue", "black", "brown"];//1. 刪除: 可以刪除任意數(shù)量的項,只需指定第一項的位置和要刪除的項數(shù)。返回被刪除的項 var colors2 = colors.splice(1,3); alert(colors2); //green,blue,black alert(colors); //red, brown//2.插入:提供三個參數(shù):起始位置、0(要刪除的項數(shù))、要插入的項 var colors3 = colors.splice(1,0, "summer", "holiday"); alert(colors); //red,summer,holiday,brownvar colors4 = colors.splice(-1,0, "summer", "holiday");//起始位置小于0時,按0計算 alert(colors); //red,summer,holiday,summer,holiday,brownvar colors5 = colors.splice(10,0, "summer", "holiday");//起始位置大于數(shù)組長度時,按數(shù)組長度計算 alert(colors); //red,summer,holiday,summer,holiday,brown,summer,holiday alert(colors.length); //8//3.替換:可以向指定位置插入任意數(shù)量的項,且同時刪除任意數(shù)量的項,三個參數(shù):起始位置,要刪除的項數(shù),要插入的項 var colors6 = colors.splice(1, 4, "green", "blue", "black"); alert(colors6); //summer,holiday,summer,holiday alert(colors); //red,green,blue,black,brown,summer,holiday

7. 位置方法

ECMAScript提供了兩個位置方法,這兩個方法都接收兩個參數(shù),要查找的項和查找起點位置的索引(可選的)

indexOf() 方法: 從數(shù)組的開頭(位置0)開始向后查找。

lastIndexOf() 方法:從數(shù)組的末尾開始向前查找。

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 alert(numbers.indexOf(6));//-1 alert(numbers.lastIndexOf(6));//-1var person = {name: "Nicholas"}; var people = [{name: "Nicholas"}];var morePeople = [person];alert(people.indexOf(person)); //-1 alert(morePeople.indexOf(person));//0

8. 迭代方法

ECMAScript為數(shù)組定義了5個迭代方法。每個方法都接收兩個參數(shù): 每一項上運行的函數(shù)和運行該函數(shù)的作用域對象(可選的)--影響this值。

傳入這些方法中的函數(shù)接收三個參數(shù):數(shù)組項的值、該項在數(shù)組中的位置、數(shù)組對象本身

every() 方法:? 對數(shù)組中的每一項運行給定函數(shù),如果該函數(shù)對每一項都返回true,則返回true

filter() 方法: 對數(shù)組中的每一項運行給定函數(shù),返回該函數(shù)會返回true的項組成的數(shù)組

forEach() 方法:對數(shù)組中的每一項運行給定函數(shù),該函數(shù)沒有返回值

map() 方法:對數(shù)組中的每一項運行給定函數(shù),返回每次函數(shù)調用的結果組成的數(shù)組

some() 方法:? 對數(shù)組中的每一項運行給定函數(shù),如果該函數(shù)對任一項返回true,則返回true

var numbers = [1,2,3,4,5,4,3,2,1];var everyResult = numbers.every(function(item, index, array){return (item > 2);}); alert(everyResult); //falsevar someResult = numbers.some(function(item, index, array){return (item > 2);}); alert(someResult); //truevar filterResult = numbers.filter(function(item, index, array){return (item > 2);}); alert(filterResult); // 3,4,5,4,3var mapResult = numbers.map(function(item, index, array){return (item + 2);}); alert(mapResult); //3,4,5,6,7,6,5,4,3

9.縮小方法

ECMAScript有兩個縮小數(shù)組的方法。這兩個方法都會迭代數(shù)組的所有項,然后構建一個最終返回的值。這兩個方法都接收兩個參數(shù),在每一項上調用的函數(shù)和作為縮小基礎的初始值。

傳入這些方法的函數(shù)接收四個參數(shù):前一個值、當前值、項的索引、數(shù)組對象。這個函數(shù)返回的任何值都會作為第一個參數(shù)自動傳給下一項。第一次迭代發(fā)生在數(shù)組的第二項上,因此第一個參數(shù)是數(shù)組的第一項,第二個參數(shù)就是數(shù)組的第二項。

reduce() 方法: 從數(shù)組的第一項開始,逐個遍歷

reduceRight() 方法: 從數(shù)組的最后一項開始,向前遍歷到第一項

var values = [1,2,3,4,5]; var sum = values.reduce(function(prev, cur, index, array){return prev + cur;}); alert(sum); //15 var sum2 = values.reduceRight(function(prev, cur, index, array){return prev + cur;}); alert(sum2); //15

?

轉載于:https://www.cnblogs.com/PrajnaParamita/p/5865487.html

總結

以上是生活随笔為你收集整理的JS引用类型 -- Array类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。