js數(shù)組

數(shù)組

什么是數(shù)組

數(shù)組就是按照次序排列的一組值,每個(gè)值都有自己的下標(biāo):var arr =[1,2,3]

數(shù)組里面的值可以保存任何類(lèi)型的數(shù)據(jù):var arr = [35,'中國(guó)',function(){},new Date(),,null]

創(chuàng)建數(shù)組

1.使用Array創(chuàng)建數(shù)組

  • 使用Array創(chuàng)建數(shù)組 var arr = new Array() 創(chuàng)建了一個(gè)空數(shù)組

  • var arr1 = new Array(3) 創(chuàng)建長(zhǎng)度為3的數(shù)組,arr1為[undefied*3],需要注意的是var arr2 = new Array('3');創(chuàng)建arr2長(zhǎng)度為1值為3的數(shù)組

  • var arr = new Array(1,2,3) 創(chuàng)建指定項(xiàng)的數(shù)組

    2.使用[]創(chuàng)建數(shù)組

  • 直接用[]創(chuàng)建數(shù)組。每個(gè)數(shù)組項(xiàng)之間用(,)隔開(kāi):var arr = ['a','b']

數(shù)組元素的訪(fǎng)問(wèn)
  • 數(shù)組中的每一項(xiàng)都有一個(gè)特定的索引號(hào),從0開(kāi)始.可以通過(guò)數(shù)組的索引訪(fǎng)問(wèn)數(shù)組: var arr = ['大','家','好'] arr[0] 為:大 0為要訪(fǎng)問(wèn)的下標(biāo)值
  • 也可以通過(guò)下標(biāo)修改值arr[1]='人' ['大','人','好']
數(shù)組length屬性
  • length屬性保存數(shù)組的長(zhǎng)度(最大下標(biāo)加1),var arr = [1,2,3,4,5] arr.length為5
  • 數(shù)組的length屬性是一個(gè)動(dòng)態(tài)的值,可以動(dòng)態(tài)修改值arr[9]='w',arr.length為10數(shù)組中間沒(méi)值的為undefined,不需要連續(xù);arr[7]為undefined
  • length是可寫(xiě)的,人為的設(shè)置長(zhǎng)度小于數(shù)組原有的長(zhǎng)度,數(shù)組會(huì)自動(dòng)減少到設(shè)置的length的長(zhǎng)度 arr.length = 2 arr[2]undefined ;arr為[1,2]
  • 利用length屬性給數(shù)組末尾添加新的數(shù)組項(xiàng) arr[arr.length] = '我',arr[2]= '我'

作用

  1. JavaScript數(shù)組是JavaScript數(shù)據(jù)類(lèi)型之一
  2. JavaScript數(shù)組就是一組有序排列的值,而且每個(gè)值都有自己對(duì)應(yīng)的索引編號(hào)值
  3. 可以通過(guò)new Array()Array()[]創(chuàng)建數(shù)組
  4. 可以通過(guò)數(shù)組的索引值訪(fǎng)問(wèn)數(shù)組的數(shù)組項(xiàng)
  5. 數(shù)組的length屬性主要用來(lái)保存數(shù)組的項(xiàng)目數(shù)
  6. 可以簡(jiǎn)單的通過(guò)length屬性值來(lái)刪除數(shù)組的最后一個(gè)值或給數(shù)組最后添加一個(gè)數(shù)組項(xiàng)目值

檢測(cè)數(shù)組方法

很多時(shí)候需要對(duì)JavaScript中的數(shù)據(jù)類(lèi)型(Function,String,Number,Undefined,Boolean,Object)做判斷,常用有typeof,instanceof

  • typeof

能判斷基礎(chǔ)數(shù)據(jù)類(lèi)型如typeof("a")得到string 但是在檢驗(yàn)數(shù)組,對(duì)象,null時(shí)會(huì)返回object.

object.png
nan.png
  • ES5 的isArray

    var arr= [1,2,3], Array.isArray(arr); true

    IE8之前的版本不支持

  • 對(duì)象自身的constructor屬性

    var arr = [1,2,3] arr.constructor === Array 得到true

  • instanceof操作符

    instanceof可以用來(lái)判斷某個(gè)構(gòu)造函數(shù)的prototype屬性是否存在另外一個(gè)要檢測(cè)的對(duì)象上,就是判斷instancof前面的對(duì)象是否是后面對(duì)象的類(lèi)或?qū)ο蟮膶?shí)例。a instancof b返回true,表示a是b的一個(gè)實(shí)例 ;arr instanceof Array 返回true.

  • 對(duì)象原生toString檢測(cè)

    Object.prototype.toString的行為:首先,取得對(duì)象的一個(gè)內(nèi)部屬性[[Class]],然后依據(jù)這個(gè)屬性,返回一個(gè)類(lèi)似于"[object Array]"的字符串作為結(jié)果(看過(guò)ECMA標(biāo)準(zhǔn)的應(yīng)該都知道,[[]]用來(lái)表示語(yǔ)言?xún)?nèi)部用到的、外部不可直接訪(fǎng)問(wèn)的屬性,稱(chēng)為“內(nèi)部屬性”)。利用這 個(gè)方法,再配合call,我們可以取得任何對(duì)象的內(nèi)部屬性[[Class]],然后把類(lèi)型檢測(cè)轉(zhuǎn)化為字符串比較,以達(dá)到我們的目的。

    ?

    call改變toStringthis引用為待檢測(cè)的對(duì)象,返回此對(duì)象的字符串表示,然后對(duì)比此字符串是否是[object Array],以判斷其是否是Array的實(shí)例。為什么不直接o.toString()?嗯,雖然Array繼承自Object,也會(huì)有toString方法,但是這個(gè)方法有可能會(huì)被改寫(xiě)而達(dá)不到我們的要求,而Object.prototype則是老虎的屁股,很少有人敢去碰它的,所以能一定程度保證其“純潔性”:)

    JavaScript 標(biāo)準(zhǔn)文檔中定義: [[Class]] 的值只可能是下面字符串中的一個(gè):Arguments, Array, Boolean, Date, Error, Function, JSON, Math, Number, Object, RegExp, String。

  1. typeof運(yùn)算符不能檢測(cè)數(shù)組
  2. ES5的isArray函數(shù)是原生的檢測(cè)方法,IE8以下不支持
  3. 對(duì)象自身的constructor屬性和instanceof操作符雖然也能檢測(cè)數(shù)組,但在frame中會(huì)有問(wèn)題
  4. 對(duì)象原生toString也能檢測(cè)數(shù)組


    prototype.png

http://www.w3cplus.com/javascript/array-part-1.html
? w3cplus.com


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、數(shù)組方法匯總 shift:刪除原數(shù)組第一項(xiàng),并返回刪除元素的值;如果數(shù)組為空則返回undefined var ...
    快抓住那個(gè)胖子閱讀 347評(píng)論 0 0
  • 由于最近都在freecodecamp上刷代碼,運(yùn)用了很多JavaScript數(shù)組的方法,因此做了一份關(guān)于JavaS...
    2bc5f46e925b閱讀 2,201評(píng)論 0 16
  • 1、數(shù)組的定義var arr=[];var arr=[{a:1,b:2},[1,2,3],function(){r...
    青春前行閱讀 402評(píng)論 0 0
  • js中數(shù)組是比較常用的對(duì)象,同時(shí)js中的數(shù)組也十分的靈活。一. 創(chuàng)建數(shù)組的方式 字面量數(shù)組 var arr=[1,...
    饑人谷_廖珍閱讀 651評(píng)論 0 2
  • 數(shù)組方法里push、pop、shift、unshift、join、split分別是什么作用。 (一)push/po...
    _fin閱讀 569評(píng)論 0 1

友情鏈接更多精彩內(nèi)容