日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JavaScript中數(shù)組對(duì)象詳解

瀏覽:70日期:2023-11-14 11:13:46

Array對(duì)象即數(shù)組對(duì)象用于在單個(gè)變量中存儲(chǔ)多個(gè)值,JS的數(shù)組是弱類型的,所以允許數(shù)組中含有不同類型的元素,數(shù)組元素甚至可以是對(duì)象或者其他數(shù)組。

創(chuàng)建數(shù)組的語(yǔ)法

1、Array構(gòu)造器

1、var list=new Array();2、var list=new Array(size);3、var list=new Array(element0,element1,...elementn);

2、字面量的方式

var Array[element0,element1,...elementn];

舉例子

var list=new Array(1,true,null,undefined,{x:1},[1,2,3]);

var list[1,true,null,undefined,{x:1},[1,2,3]]; 數(shù)組的分類

1、二維數(shù)組,二維數(shù)組的本質(zhì)是數(shù)組中的元素又是數(shù)組。

var arr = [[1,2],[a,b]];alert(arr[1][0]); //a 第2列第1行所在的元素

2、稀疏數(shù)組

稀疏數(shù)組是包含從0開始的不連續(xù)索引的數(shù)組。在稀疏數(shù)組中一般length屬性值比實(shí)際元素個(gè)數(shù)大(不常見)

舉例

var a=['a',,'b',,,,'c',,];

數(shù)組對(duì)象屬性 屬性 作用length 屬性 表示數(shù)組的長(zhǎng)度,即其中元素的個(gè)數(shù)prototype 屬性 返回對(duì)象類型原型的引用constructor 屬性 表示創(chuàng)建對(duì)象的函數(shù)

1、length 屬性

通過一些操作來講解length屬性

var arr=[1,2,3,4,5,6,7,8,9,10]; //定義了一個(gè)包含10個(gè)數(shù)字的數(shù)組。

數(shù)組的長(zhǎng)度屬性是可變的

alert(arr.length); //顯示數(shù)組的長(zhǎng)度10arr.length=15; //增大數(shù)組的長(zhǎng)度,length屬性是可變的alert(arr.length); //顯示數(shù)組的長(zhǎng)度已經(jīng)變?yōu)?5

訪問數(shù)組元素

alert(arr[3]); //顯示第4個(gè)元素的值,為4

減小數(shù)組長(zhǎng)度

arr.length=2; //將數(shù)組的長(zhǎng)度減少到2,數(shù)組中的元素只剩下索引值小于2的元素alert(arr[9]); //這時(shí)候顯示第10個(gè)元素已經(jīng)變?yōu)?undefined'因?yàn)樗饕荡笥诘扔?的元素都被拋棄了

恢復(fù)數(shù)組長(zhǎng)度

arr.length=10; //將數(shù)組長(zhǎng)度恢復(fù)為10alert(arr[9]); //長(zhǎng)度恢復(fù)之后已經(jīng)拋棄的元素卻無法收回,顯示'undefined'

2、prototype 屬性

prototype 屬性返回對(duì)象類型原型的引用。 prototype 屬性是 object 共有的。

objectName.prototype

objectName 參數(shù)是 object 對(duì)象的名稱。

說明:用 prototype 屬性提供對(duì)象的類的一組基本功能。 對(duì)象的新實(shí)例“繼承”賦予該對(duì)象原型的操作。

對(duì)于數(shù)組對(duì)象,用以下例子說明prototype 屬性的用途。

給數(shù)組對(duì)象添加返回?cái)?shù)組中最大元素值的方法。要完成這一點(diǎn),聲明一個(gè)函數(shù),將它加入 Array.prototype, 并使用它。

function array_max( ){ var i, max = this[0]; for (i = 1; i < this.length; i++) { if (max < this[i]) max = this[i]; } return max;}Array.prototype.max = array_max;var x = new Array(1, 2, 3, 4, 5, 6);var y = x.max( );

該代碼執(zhí)行后,y 保存數(shù)組 x 中的最大值,或說 6。

3、constructor 屬性

constructor 屬性表示創(chuàng)建對(duì)象的函數(shù)。

object.constructor //object 是對(duì)象或函數(shù)的名稱。

說明: constructor 屬性是所有具有 prototype 的對(duì)象的成員。它們包括除 Global 和 Math 對(duì)象以外的所有 JScript 固有對(duì)象。 constructor 屬性保存了對(duì)構(gòu)造特定對(duì)象實(shí)例的函數(shù)的引用。

例如:

x = new String('Hi');if (x.constructor == String) // 進(jìn)行處理(條件為真)。//或function MyFunc {// 函數(shù)體。}y = new MyFunc;if (y.constructor == MyFunc) // 進(jìn)行處理(條件為真)。

對(duì)于數(shù)組來說:

y = new Array(); Array的對(duì)象方法

說明:部分是ECMAScript5的新特性(IE678不支持)

方法 作用concat() 連接兩個(gè)或者更多的數(shù)組,并返回結(jié)果join() 將數(shù)組的元素組起一個(gè)字符串pop() 刪除并返回?cái)?shù)組的最后一個(gè)元素push() 數(shù)組末尾添加一個(gè)或者多個(gè)元素,返回新的長(zhǎng)度reverse 顛倒數(shù)組中元素的順序shift() 刪除并返回?cái)?shù)組的第一個(gè)元素slice() 從某個(gè)已有的數(shù)組返回選定的元素sort() 對(duì)數(shù)組元素排序splice() 刪除元素,并向數(shù)組添加新元素toSource() 返回該對(duì)象的源代碼toString() 把數(shù)組轉(zhuǎn)化為字符串并返回結(jié)果toLocalString() 把數(shù)組轉(zhuǎn)化為本地元素并返回結(jié)果unshift 向數(shù)組開頭添加一個(gè)或者更多的元素,并返回新的長(zhǎng)度valueof() 返回?cái)?shù)組對(duì)象的原始值forEach() 遍歷數(shù)組對(duì)象map() 對(duì)數(shù)組做一些映射filter() 過濾every() 檢查判斷some() 檢查判斷reduce() 兩兩執(zhí)行一定的操作reduceRight() 從右到左執(zhí)行操作indexOf() 數(shù)組檢索查找某個(gè)元素Array.isArray([]) 判斷是否是數(shù)組

主要對(duì)一些新特性進(jìn)行講解

concat

concat作用是拼接數(shù)組,需要注意的是也可以把一個(gè)數(shù)組元素作為拼接的元素,如果這樣的話,數(shù)組會(huì)被拉平,再和其它的元素拼接起來成為新的數(shù)組,但是不會(huì)被拉平兩次,concat不會(huì)修改原數(shù)組。

例如

var arr=[1,2,3,4,5];arr.concat([10,11],13);//[1,2,3,4,5,10,11,13]arr.concat([1,[2,3]]);//[1,2,3,4,5,1,[1,3]]

slice

slice(a,b)a和b可以取負(fù)數(shù),表示從a位置開始截取到b位置的一段數(shù)組,是一個(gè)左閉右開的區(qū)間,a和b可以取負(fù)數(shù),如果是負(fù)數(shù)代表倒數(shù)第a/b個(gè)元素

var arr=[1,2,3,4,5];arr.slice(1,3);//[2,3]arr.slice(1);//[2,3,4,5]arr.slice(1,-1);//[2,3,4]arr.slice(-4,-3);//[2]

splice

splice刪除元素并向數(shù)組添加新元素

object.splice(a) 從左邊開始刪除a個(gè)元素

object.splice(a,b) 從a位置開始截取其中的b個(gè)元素

object.splice(a,b,c,d) 從a位置開始截取b個(gè)元素,并將c和d或者更多的元素插入原數(shù)組

需要注意的是splice會(huì)修改原數(shù)組

var arr=[1,2,3,4,5];arr.splice(2);//[3,4,5]arr;//[1,2];原數(shù)組被修改了var arr=[1,2,3,4,5];arr.splice(2,2);//[3,4]arr;//[1,2,5];var arr=[1,2,3,4,5];arr.splice(1,1,‘a(chǎn)’,‘b’);//[2]arr;//[1,'a','b',3,4,5];

foreach

foreach()函數(shù)從頭到尾把數(shù)組遍歷一遍。有三個(gè)參數(shù)分別是:數(shù)組元素,元素的索引,數(shù)組本身

var arr = [1, 2, 3, 4, 5];arr.forEach(function(x, index, a){//分別對(duì)應(yīng):數(shù)組元素,元素的索引,數(shù)組本身 console.log(x + ’|’ + index + ’|’ + (a === arr));});// 1|0|true// 2|1|true// 3|2|true// 4|3|true// 5|4|true

說明:如果只有一個(gè)參數(shù)那這個(gè)參數(shù)代表數(shù)組元素,也就是數(shù)組的值,請(qǐng)看例2。

例2var data=[1,2,3,4,5,6];var sum=0;data.forEach(function(v){//其中的v就是數(shù)組的值 123456sum+=v;})document.write(sum+'<br>');//打印出來是21

map

map 對(duì)數(shù)組做一些映射,map() 方法返回一個(gè)由原數(shù)組中的每個(gè)元素調(diào)用一個(gè)指定方法后的返回值組成的新數(shù)組,它與forEach的區(qū)別是forEach為數(shù)組中的每個(gè)元素執(zhí)行一次回調(diào)函數(shù)。

var arr = [1, 2, 3];arr.map(function(x) { return x + 10;}); // [11, 12, 13]arr; // [1, 2, 3]

filter

filter 過濾掉某些元素,和map有點(diǎn)類似,Array的filter也接收一個(gè)函數(shù)。但是和map不同的是, filter把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是 true 還是false決定保留還是丟棄該元素,也就是過濾掉不符合要求的某些元素。

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];arr.filter(function(x, index) { return index % 3 === 0 || x >= 8;}); // returns [1, 4, 7, 8, 9, 10]arr; // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

every()與some()

every()與some()方法都是JS中數(shù)組的迭代方法。every()是對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對(duì)每一項(xiàng)返回true,則返回true。some()是對(duì)數(shù)組中每一項(xiàng)運(yùn)行指定函數(shù),如果該函數(shù)對(duì)任一項(xiàng)返回true,則返回true。

總結(jié)就是every()當(dāng)每個(gè)元素都符合條件的時(shí)候返回true,而some()是任一項(xiàng)滿足條件就返回true

例1 every()var arr = [1, 2, 3, 4, 5];arr.every(function(x) { return x < 10;}); // truearr.every(function(x) { return x < 3;}); // false

some只需要有一個(gè)符合的就行

例2 somevar arr = [1, 2, 3, 4, 5];arr.some(function(x) { return x === 3;}); // truearr.some(function(x) { return x === 100;}); // false

reduce()

Array的reduce()把一個(gè)函數(shù)作用在這個(gè)Array的[x1, x2, x3...]上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce()把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算,其效果就是:

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)

var arr = [1, 2, 3];var sum = arr.reduce(function(x, y) { return x + y}, 0); //參數(shù) 0是可選的,如果寫了參數(shù)0那第一次傳遞的兩個(gè)值就是0和1如果不寫第一次傳遞的就是數(shù)組的前兩個(gè)值,計(jì)算結(jié)果是6arr; //[1, 2, 3]arr = [3, 9, 6];var max = arr.reduce(function(x, y) { console.log(x + '|' + y); return x > y ? x : y;});// 3|9// 9|6max; // 9

reduceRight

和reduce一樣只不過reduceRight 變成了從右到左兩兩執(zhí)行某些操作

max = arr.reduceRight(function(x, y) { console.log(x + '|' + y); return x > y ? x : y;});// 6|9// 9|3max; // 9

indexOf()

indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置,indexOf(a,b)表示查找a元素,從b位置開始;lastindexOf表示從右向左找。當(dāng)b為負(fù)數(shù)的時(shí)候表示從倒數(shù)第幾個(gè)元素開始找,請(qǐng)看例子。

var arr = [1, 2, 3, 2, 1];arr.indexOf(2); // 1arr.indexOf(99); // -1表示沒有這個(gè)元素arr.indexOf(1, 1); // 4arr.indexOf(1, -3); // 4查找1從倒數(shù)第3個(gè)元素開始arr.indexOf(2, -1); // -1查找2從倒數(shù)第1個(gè)元素開始arr.lastIndexOf(2); // 3從右邊開始找第一次出現(xiàn)2的位置arr.lastIndexOf(2, -2); // 3從右邊的倒數(shù)第二個(gè)開始找2出現(xiàn)的位置arr.lastIndexOf(2, -3); // 1

isArray

isArray用來判斷是否是數(shù)組,但是isArray是Array構(gòu)造器對(duì)象上的屬性,所以不能直接用isArray,必須要寫成Array.isArray([]),但是可以其它的判斷方法直接判斷

[]instanceof Array;//true({}).toString.apply([])===’[object Array]’;//true[].construcror===Array;//true

數(shù)組和一般對(duì)象的比較

數(shù)組 / 一般對(duì)象相同點(diǎn) 都可以繼承,對(duì)象不一定是數(shù)組,都可以當(dāng)做對(duì)象添加屬性不同點(diǎn) 數(shù)組自動(dòng)更新length按索引訪問數(shù)組比訪問一般對(duì)象屬性明顯迅速。數(shù)組對(duì)象繼承Array.prototype上的大量數(shù)組操作方法

數(shù)組和字符串的比較

數(shù)組 /字符串相同點(diǎn) 字符串是數(shù)組的一種不同點(diǎn) 字符串是不可變的數(shù)組,字符串沒有數(shù)組的方法

來自:http://www.jianshu.com/p/fd8c73d2cf2c

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
丝袜美腿诱惑一区二区三区| 成人亚洲一区| 日韩精品不卡一区二区| 久久只有精品| 国产精品成人国产| 国产精品99久久免费| 亚洲ww精品| 一级欧美视频| 红桃视频国产精品| 国产精品av久久久久久麻豆网| 亚洲美女久久精品| 久久国产成人| 日韩专区在线视频| 久久电影一区| 美日韩精品视频| 男女男精品网站| 91精品国产自产在线丝袜啪| 欧美日韩xxxx| 美女精品在线| 天堂久久一区| 国产亚洲一区二区三区啪| 日本欧美韩国一区三区| sm久久捆绑调教精品一区| 国产乱子精品一区二区在线观看 | 黄色欧美在线| 国产精一区二区| 国产一区二区三区久久| 日韩国产综合| 99国产精品免费视频观看| 欧美日中文字幕| 99视频精品全国免费| 国产精品毛片| 欧美天堂一区| 成人精品国产亚洲| 99久久激情| 久久成人亚洲| 国产伦精品一区二区三区在线播放| 精品视频99| 91精品一区国产高清在线gif| 91久久久精品国产| 蜜桃av一区二区| 国产精品免费大片| 欧美aa一级| 先锋影音久久久| 欧美在线看片| 激情黄产视频在线免费观看| 久久中文视频| 亚洲综合图色| 精品欠久久久中文字幕加勒比| 中文在线а√天堂| 亚洲三级精品| 九色精品91| 精品一区二区三区中文字幕| 亚洲开心激情| 亚洲天堂日韩在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产网站在线| 精品国产中文字幕第一页| 日韩欧美一区二区三区在线视频 | 国产成人精品三级高清久久91| 电影天堂国产精品| 亚洲欧美久久久| 麻豆久久一区| 国产99久久久国产精品成人免费| 天海翼精品一区二区三区| 国产精品视频一区二区三区 | 日本欧美在线看| 国产欧美高清视频在线| 亚洲调教视频在线观看| 日韩欧美另类中文字幕| 国产色播av在线| 亚洲免费毛片| 日韩免费久久| 国产精品久久乐| 国产综合亚洲精品一区二| 国产午夜久久av| 日韩一级欧洲| 国产h片在线观看| 亚洲精品自拍| 久久三级福利| 国产精品玖玖玖在线资源| 免费久久精品视频| 亚洲香蕉视频| 91青青国产在线观看精品| 欧美一级专区| 日本在线精品| 精品一区二区三区中文字幕在线| 蜜桃久久久久| 国产激情久久| 亚洲精品自拍| 99成人在线| 国产91一区| 97精品国产一区二区三区| 国产无遮挡裸体免费久久| 久久国产电影| 嫩草伊人久久精品少妇av杨幂| 国产精品伦理久久久久久| 日本vs亚洲vs韩国一区三区二区| 97在线精品| 国产高清亚洲| 88久久精品| 国产一区久久| 欧美sss在线视频| 日韩av资源网| 一区二区电影| 亚洲四虎影院| 色综合五月天| 日韩精品免费视频一区二区三区| 久久午夜视频| 日本高清不卡一区二区三区视频| 精品国产美女a久久9999| 一区二区亚洲精品| 婷婷精品视频| 精品国产午夜肉伦伦影院 | 亚洲精品午夜av福利久久蜜桃| 欧美中文字幕一区二区| 亚洲欧美一级| 日韩在线观看一区| 亚洲一卡久久| 中文字幕人成乱码在线观看| 亚洲激情国产| 精品久久精品| 日韩精品导航| 日韩毛片网站| 国产一区调教| 夜夜精品视频| 性欧美69xoxoxoxo| 美腿丝袜亚洲一区| 久久免费精品| 亚洲va久久| 亚洲精品大片| 国产99精品| 91久久午夜| 国产99久久久国产精品成人免费| 99久久婷婷| 亚洲国产成人二区| 久久婷婷av| 日韩欧美一区二区三区免费看| 亚洲成人va| 国产成人免费| 999国产精品视频| 日本久久综合| 99免费精品| 吉吉日韩欧美| 欧美~级网站不卡| 欧美sm一区| 国产国产精品| 99精品一区| 99re国产精品| 久久青草久久| 日韩成人高清| 日本色综合中文字幕| 亚洲视频二区| 日韩中文视频| 91久久中文| 亚洲精品无吗| 久久一区精品| 日韩在线卡一卡二| 图片区亚洲欧美小说区| av不卡在线看| 亚洲天堂日韩在线| 美女久久久精品| 国产成人免费视频网站视频社区| 蜜桃视频在线观看一区| 亚洲精品日本| 日本综合精品一区| 日韩av专区| 99日韩精品| 欧美黑人做爰爽爽爽| 亚洲欧洲日韩| 国产极品一区| 亚洲精一区二区三区| 亚洲一区二区日韩| 91精品尤物| 午夜国产一区二区| 国产精品精品| 日韩高清不卡| 在线观看亚洲精品福利片| 91久久久精品国产| 亚洲一区黄色| 91欧美国产| 国产成人久久精品麻豆二区 | 国产图片一区| 日韩精品一区二区三区免费观影| 粉嫩av一区二区三区四区五区 | 日韩中文一区二区| 国产中文欧美日韩在线| 日韩国产一区二区三区| 免费欧美日韩| 国产精品tv| 日本成人中文字幕在线视频| 日本午夜精品久久久| 欧美不卡高清| 欧美午夜不卡| 午夜久久99| 中文字幕一区久| 一本色道精品久久一区二区三区| 国产精品久久| 国产黄大片在线观看| 国产欧美一区|