亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js一維數組、多維數組和對象的混合使用方法

2019-11-20 10:18:05
字體:
來源:轉載
供稿:網友

這篇文章的主要目的是講解JavaScript數組和對象的混合使用,由于JS的弱檢查特性,因此在JS數組中可以同時存儲不同類型的變量,比如你可以把數字、字符串、字符、對象等內容放在同一個數組中。對象也可以做同樣的事情,區別是對象可以指定對象里每一個成員的別名,這樣在編程的時候數據更易讀,比如:

var arr1 = ["飛魚", 25, 172, "江蘇"];var person = {name:"飛魚",age: 25, height:172,province: "江蘇"};

這樣,person.name是不是比arr1[0]更易讀,更易使用?當然數組和對象各有優勢,本文的重點是將二者的優勢結合起來,綜合使用。

一維數組
下面的代碼創建名為 cars 的數組:先創建數組,再一一賦值

var cars=new Array();cars[0]="Audi";cars[1]="BMW";cars[2]="Volvo";

或者 (condensed array):在創建數組對象的時候賦值

復制代碼 代碼如下:

var cars=new Array("Audi","BMW","Volvo");

或者 (literal array):不創建變量,直接輔助,不過注意創建對象時用的小括號“( )”,而直接賦值時用的是方括號“[ ]”,這個一不小心就容易出錯。
實例
復制代碼 代碼如下:

var cars=["Audi","BMW","Volvo"];

上面是一維數組的三種創建方式。由于JS的弱檢查性,你可以在一維數組中放不同類型的變量。

二維和多維數組:
1、 創建二維數組方法一:先創建一個一維數組,然后該一維數組的所有成員再創建一維數據

var persons = new Array();persons[0] = new Array();persons[1] = new Array();persons[2] = new Array();persons[0][0] = "zhangsan";persons[0][1] = 25;persons[1][0] = "lisi";persons[1][1] = 22;persons[2][0] = "wangwu";persons[2][1] = 32;persons[0] = ["zhangsan", 25];persons[1] = ["lisi", 21];persons[2] = ["wangwu", 32];

相比較上一種方法,這個要簡單易讀多了。

復制代碼 代碼如下:

persons.length = 3

       2、創建二維數組方法二:先創建一個一維數組,然后該一維數組的所有成員直接賦值
復制代碼 代碼如下:

var persons = new Array();

       3、創建二維數組方法三:直接賦值
復制代碼 代碼如下:

var persons = [["zhangsan", 25], ["lisi", 21], ["wangwu", 32]];

4、總結
第一種和第二種方法雖然麻煩一些,但貴在可以先創建一個空的多維數組,然后在for循環中根據自己的需求進行賦值。第三種方法對于枚舉數據來說就比較簡單易用了。
二維數組的最后一個問題,就是二維數組或多維數組的長度是多少?我們測試一下下面的代碼:

復制代碼 代碼如下:

document.write("persons = " + persons + "<br />persons.length = " + persons.length);

       輸出的結果是:
            persons = zhangsan,25,lisi,21,wangwu,32
    也就是說,多維數組的length屬性返回的是多維數組第一維的長度,而不是多維數組中元素的個數。

   5、如何返回多維數組的元素個數

如下數組:

復制代碼 代碼如下:

var persons = [["zhangsan", 25], ["lisi", 21], ["wangwu", 32]];

通過維數(此處是3)乘以每維元素的個數(此處是2)就可以得出該多維數組的元素個數是6了。但是這并不是保險的做法,因為多維數組中每一個維度的元素個數是可以不一樣的,如:

復制代碼 代碼如下:

var persons = [["zhangsan", 25], ["lisi", 21, 172], ["wangwu", 32]];

        該數組的第一維的第二個元素數組包含三個元素,其他的只有兩個,這再使用length來計算還是3,因為第一維的元素個數沒變嘛。但是再使用上面的方法計算該多維數組的元素個數就不對了。
        因此多維數組的length屬性和一維數組一樣,永遠返回第一維數組的元素個數。計算多維數組的元素個數,可以自己創建一個或多個嵌套for循環來計算,如:
        在知道數組的維度的情況下,可以針對該數組寫算法,如二維數組:

var persons = [["zhangsan", 25], ["lisi", 21], ["wangwu", 32]];function getArr2ElementNum(arr) {var eleNum = 0;if (arr == null) {return 0;}for (var i = 0; i < arr.length; i++) {for (var j = 0; j < arr[i].length; j++) {eleNum++;}}return eleNum;}alert(getArr2ElementNum(persons));


      在多維數組維度過多,嵌套復雜時,通過上面的方法來寫針對的算法就太累了,特別是當這個復雜的多維數組還可能隨時變換維度的情況下。如下這個復雜的多重嵌套的多維數組:
var arrN = [["zhangsan", 25, [1, "wangyuchu", 54, [123, 34, 16]], 43], ["lisi", 21, 172], ["wangwu", 32, "suzhou"]];
      甚至,有些多維嵌套數組比這個還復雜,那怎么計算數組元素個數呢,我寫了一個求數組元素個數的函數,不管是一維還多維,也不管是多么復雜的嵌套多維數組,都可以計算出來,算法不麻煩,主要用到了遞歸的理念:
//判斷某個對象是不是數組

function isArray(obj) {return obj && ( typeof obj === 'object') && (obj.constructor == Array);}//eleNum變量初始值為0,用來統計數組元素個數var eleNum = 0;//遞歸計算某個數組元素是不是下一維數組,如果是,則繼續遞歸下去;如果不是,統計元素個數。function recursion(obj) {if (isArray(obj)) {for (var j = 0; j < obj.length; j++) {if (!isArray(obj[j])) {eleNum++;continue;}recursion(obj[j]);}} else {eleNum++;}}//arr為要計算數組元素個數的一維或多維數組,通過調用遞歸函數recursion返回數組元素個數function getArrNElementNum(arr) {if (arr == null) {return 0;}recursion(arr);return eleNum;}//隨意定義一個復雜的多維嵌套數組var arrN = [["zhangsan", 25, [1, "wangyuchu", 54, [123, 34, 16]], 43], ["lisi", 21, 172], ["wangwu", 32, "suzhou"]];//打印出來數組元素個數alert(getArrNElementNum(arrN));

對象:
對象由花括號分隔。在括號內部,對象的屬性以名稱和值對的形式 (name : value) 來定義。屬性由逗號分隔:

復制代碼 代碼如下:

var person={firstname:"Bill", lastname:"Gates", id:5566};

上面例子中的對象 (person) 有三個屬性:firstname、lastname 以及 id。
空格和折行無關緊要。聲明可橫跨多行:

var person={firstname : "Bill",lastname : "Gates",id    : 5566};

對象屬性有兩種尋址方式:
實例

name=person.lastname;name=person["lastname"];

對象和多維數組的混合使用:
         想象這么一個場景,要枚舉并統計清華大學(qinghua)、北京大學(beida)、浙江大學(zheda)三所大學一共有多少個系,怎么做?
         首先,建立一個數組,數組中包括著三所學校:

復制代碼 代碼如下:

var departments = [qinghua, beida, zheda];

        每個學校又有很多不同或相同的學院(xx),如何表示?在這里就要用到數組包含對象了:
復制代碼 代碼如下:

var departments = [qinghua{xx1, xx2, xx3}, beida{xx4, xx5,
 xx6, xx7}, zheda{xx8, xx9}];

每個學院又有不同的系(d),如何表示?
復制代碼 代碼如下:

var departments = [qinghua{xx1:[d1, d2], xx2[d3, d5],
 xx3:[d7, d8]}, beida{xx4, xx5, xx6, xx7}, zheda{xx8,
 xx9}];
 //只是舉個例子,后面兩個大學我就不表示了

上述例子就是一個數組,該數組的元素是學校對象,學校對象有N個學院屬性,而每個學院屬性又是一個包含多個系的數組,這就是一個典型的多維數組和對象混合使用的例子,可以簡單明了的說明和列表學校、學院和系之間的級別、歸屬和數量關系。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品亚洲男同gayvideo网站| 琪琪亚洲精品午夜在线| 久久久久久久97| 欧洲亚洲女同hd| 国产一区二中文字幕在线看| 国产成+人+综合+亚洲欧美丁香花| 8090成年在线看片午夜| 一区三区二区视频| 狠狠色噜噜狠狠狠狠97| 久久91精品国产| 欧美日韩另类在线| 国产精品综合久久久| 欧美一级大片在线观看| 国产精品丝袜视频| 久久韩国免费视频| 91精品久久久久久久久青青| 91久久久久久久一区二区| 国产精品第七十二页| 久久久国产91| 日韩精品在线观看一区二区| 久久乐国产精品| 国产精品美女无圣光视频| 91精品91久久久久久| 欧美二区在线播放| 成人免费视频在线观看超级碰| 日韩成人在线免费观看| 亚洲欧美www| 日本高清不卡的在线| 色综合天天狠天天透天天伊人| 精品国产91久久久久久老师| 亚洲性视频网址| 国产精品白丝av嫩草影院| 最近2019年中文视频免费在线观看| 国产亚洲视频在线| 色综合色综合网色综合| 欧美理论电影在线播放| 91经典在线视频| 欧美日韩国产综合视频在线观看中文| 亚洲欧美中文另类| 91中文精品字幕在线视频| 亚洲电影在线看| 成人免费视频网| 国内自拍欧美激情| 日韩美女视频中文字幕| 国产在线日韩在线| 大量国产精品视频| 亚洲精品在线看| 91超碰caoporn97人人| 国产精品女主播视频| 国产免费一区视频观看免费| 尤物yw午夜国产精品视频| 一本色道久久88综合亚洲精品ⅰ| 成人av.网址在线网站| 中文字幕日韩专区| 欧美精品videofree1080p| 久久久久久久久久亚洲| 成人免费福利在线| 精品久久久在线观看| 亚洲精品98久久久久久中文字幕| 在线看片第一页欧美| 成人av资源在线播放| 亚洲午夜av久久乱码| 成人午夜小视频| 国产精品日韩在线一区| 草民午夜欧美限制a级福利片| 91老司机精品视频| 国产精品免费看久久久香蕉| 热门国产精品亚洲第一区在线| 精品国产一区二区三区久久久| 欧美国产第一页| 精品国产依人香蕉在线精品| 狠狠色香婷婷久久亚洲精品| 亚洲精品电影在线| 91免费精品视频| 精品爽片免费看久久| 日韩欧美亚洲范冰冰与中字| 国产精品伦子伦免费视频| 深夜精品寂寞黄网站在线观看| 久久影院免费观看| xxxxx91麻豆| 久久久精品免费视频| 亚洲专区国产精品| 国产精品成久久久久三级| 亚洲a区在线视频| 4444欧美成人kkkk| 午夜精品三级视频福利| 亚洲三级黄色在线观看| 国产精品视频不卡| 色偷偷88888欧美精品久久久| 91禁国产网站| 欧美性xxxx极品hd满灌| 国产一区二区三区久久精品| 亚洲精品久久久久久久久久久久| 国产国语videosex另类| 精品国产福利视频| 色悠久久久久综合先锋影音下载| 国产剧情久久久久久| 在线观看中文字幕亚洲| 日韩专区在线观看| 欧美激情精品在线| 狠狠躁夜夜躁人人爽天天天天97| 国产aⅴ夜夜欢一区二区三区| 综合欧美国产视频二区| 国产999精品| 国产v综合ⅴ日韩v欧美大片| 日韩av一区二区在线观看| 亚洲综合大片69999| 国产成人精品一区二区在线| 亚洲free性xxxx护士白浆| 亚洲aa在线观看| 日韩电影免费在线观看| 日韩大片在线观看视频| 欧美精品在线网站| 在线亚洲欧美视频| 久久久伊人欧美| 精品福利免费观看| 久久综合伊人77777蜜臀| 97超碰蝌蚪网人人做人人爽| 国产精品com| 日韩av免费在线| 国产精品青青在线观看爽香蕉| 黑人巨大精品欧美一区二区一视频| 日韩av影视综合网| 国产精品爽黄69天堂a| 欧美在线观看www| 日韩精品免费电影| 欧美国产亚洲视频| 日本精品视频在线播放| 亚洲成成品网站| 亚洲精品美女在线| 国产精品pans私拍| 欧美日韩亚洲成人| 国产欧美日韩免费看aⅴ视频| 成人黄色片网站| 91精品在线看| 久久99青青精品免费观看| 久久不射电影网| 91精品国产综合久久久久久蜜臀| 97在线观看视频| 久久久久久久久久久成人| 久久中文久久字幕| 亚洲综合在线做性| 国产午夜精品久久久| 国产剧情日韩欧美| 国产欧美一区二区三区在线| 国产精品观看在线亚洲人成网| 亚洲国产精品热久久| 亚洲福利在线看| 欧美一级电影免费在线观看| 日韩免费看的电影电视剧大全| 国产精品视频自拍| 亚洲国产高清福利视频| 岛国av午夜精品| 91系列在线观看| 国产亚洲综合久久| 国产伦精品免费视频| 日韩电影大全免费观看2023年上| 91精品久久久久久久久久入口| 亚洲国产第一页| 国产www精品| 国产美女久久精品香蕉69| 日韩精品免费一线在线观看| 欧美成人精品一区二区三区| 国产日韩av高清|