成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript學(xué)習(xí)筆記之?dāng)?shù)組(一)

Yangder / 1180人閱讀

摘要:數(shù)組基礎(chǔ)篇數(shù)組的語法數(shù)組是按次序排列的一組值。屬性數(shù)組的屬性,返回數(shù)組的成員數(shù)量。通過設(shè)置的值改變數(shù)組的長度將屬性設(shè)為可以清空數(shù)組。類似數(shù)組的對象并不是數(shù)組,因為它們不具備數(shù)組特有的方法。

數(shù)組基礎(chǔ)篇 1.數(shù)組的語法

數(shù)組(array)是按次序排列的一組值。每個值的位置都有編號(從0開始)。
var arr=[1,2,3] //arr[0]=1
任何類型的數(shù)據(jù),都可以放入數(shù)組。

 var arr=[
            1,
            "a",
            undefined,
            null,
            true,
            {"name": "jack","age": 18},
            function(){console.log(fn)}
        ]
arr[5]//對象:{name: "jack", age: 18}
arr[6]//函數(shù):? (){console.log(fn)}

多維數(shù)組

var a = [[1, 2], [3, 4]];
        console.log(a[0][0])//1
        console.log(a[1][1])//4
2.數(shù)組的特點

數(shù)組是對象,typeof運算符會返回數(shù)組的類型是object
數(shù)組的特殊性體現(xiàn)在,它的鍵名是按次序排列的一組整數(shù)(0,1,2…)。

var arr = ["a","b","c"];
        console.log(typeof(arr))//object
         console.log(Object.keys(arr))// ["0", "1", "2"]

上面代碼中,可以看到數(shù)組成員的鍵名是固定的(默認(rèn)總是0、1、2…)
JavaScript 語言規(guī)定,對象的鍵名一律為字符串,所以,數(shù)組的鍵名其實也是字符串。之所以可以用數(shù)值讀取,是因為非字符串的鍵名會被轉(zhuǎn)為字符串。

3.length屬性

數(shù)組的length屬性,返回數(shù)組的成員數(shù)量。

JavaScript 使用一個32位整數(shù),保存數(shù)組的元素個數(shù)。這意味著,數(shù)組成員最多只有 4294967295 個(2^32 - 1)個,也就是說length屬性的最大值就是 4294967295。

只要是數(shù)組,就一定有l(wèi)ength屬性。該屬性是一個動態(tài)的值,等于整數(shù)鍵名中的最大整數(shù)加上1。

通過設(shè)置length的值改變數(shù)組的長度
將length屬性設(shè)為0可以清空數(shù)組。
如果設(shè)置length大于當(dāng)前數(shù)組元素個數(shù),則數(shù)組的長度會增加到這個值,新增的位置都是空位,讀取新增的位置都會返回undefined。

length的值只能是正整數(shù),其他值會報錯

值得注意的是,由于數(shù)組本質(zhì)上是一種對象,所以可以為數(shù)組添加屬性和屬性值,但是這不影響length屬性的值。

4.in運算符

檢查某個鍵名是否存在的運算符in,適用于對象,也適用于數(shù)組。

var arr=["a","b","c"]
        console.log(1 in arr)//true 
        console.log(3 in arr)//false

如果數(shù)組的某個位置是空位,in運算符返回false。

var arr=["a","b","c"]
        console.log(1 in arr)//true 
        console.log(3 in arr)//false
        arr[100]=2
        console.log(100 in arr)//true
        console.log(99 in arr)//false
        console.log(101 in arr)//false
5.for…in 循環(huán)和數(shù)組的遍歷

for...in循環(huán)不僅可以遍歷對象,也可以遍歷數(shù)組,因為數(shù)組也是對象。

var arr=["a","b","c"]
        arr.dd="d"
        for(let i in arr){
            console.log(i)//0,1,2,dd
            console.log(arr[i])//a,b,c,d
        }

一般都是用for循環(huán)遍歷數(shù)組

6.類數(shù)組

如果一個對象的所有鍵名都是正整數(shù)或零,并且有l(wèi)ength屬性,那么這個對象就很像數(shù)組,語法上稱為“類似數(shù)組的對象”。
類似數(shù)組的對象”并不是數(shù)組,因為它們不具備數(shù)組特有的方法。

“類似數(shù)組的對象”的根本特征,就是具有l(wèi)ength屬性。這種length屬性不是動態(tài)值,不會隨著成員的變化而變化。

將類數(shù)組轉(zhuǎn)換為數(shù)組的方法

var arr = Array.prototype.slice.call(arrayLike);

 var obj={
           0: "a",
           1: "b",
           2: "c",
           3: "d",
           "length": 4
       }
       console.log(obj instanceof Array)//false
       var arr=Array.prototype.slice.call(obj)
       console.log(arr instanceof Array)//true

類數(shù)組也可以通過call()方法可以調(diào)用數(shù)組的方法。

var obj={
           0: "a",
           1: "b",
           2: "c",
           3: "d",
           "length": 4
       }
      Array.prototype.forEach.call(obj,(value,key)=>console.log(key+":"+value))
//       0:a
//       1:b
//       2:c
//       3:d

字符串也是類似數(shù)組的對象,所以也可以用Array.prototype.forEach.call遍歷。

 Array.prototype.forEach.call("string", (str,key)=>console.log(key+":"+str))
        // 0:s
        // 1:t
        // 2:r
        // 3:i
        // 4:n
        // 5:g

call()方法比直接使用數(shù)組原生的forEach要慢,所以最好還是先將類數(shù)組轉(zhuǎn)為真正的數(shù)組,再調(diào)用數(shù)組的forEach方法。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/107709.html

相關(guān)文章

  • JavaScript學(xué)習(xí)筆記數(shù)組(三)

    摘要:學(xué)習(xí)筆記之?dāng)?shù)組二輸出什么為什么有三個參數(shù)數(shù)組元素,元素索引,數(shù)組本身有兩個參數(shù)元素本身以及進(jìn)制語法參數(shù)可選。表示要解析的數(shù)字的基數(shù)。如果該參數(shù)小于或者大于,則將返回。當(dāng)參數(shù)的值為或沒有設(shè)置該參數(shù)時,會根據(jù)來判斷數(shù)字的基數(shù)。 JavaScript學(xué)習(xí)筆記之?dāng)?shù)組(二) 1.[1,2,3].map(parseInt) 輸出什么,為什么? [1,2,3].map(parseInt)//[1,N...

    YPHP 評論0 收藏0
  • JavaScript學(xué)習(xí)筆記數(shù)組(二)

    摘要:方法用于刪除原數(shù)組的一部分成員,并可以在刪除的位置添加新的數(shù)組成員,返回值是被刪除的元素。,這兩個方法,返回一個布爾值,表示判斷數(shù)組成員是否符合某種條件。該函數(shù)接受三個參數(shù)當(dāng)前成員當(dāng)前位置和整個數(shù)組,然后返回一個布爾值。 數(shù)組基礎(chǔ)篇二 數(shù)組對象 1.聲明數(shù)組的方法 Array是 JavaScript 的原生對象,同時也是一個構(gòu)造函數(shù),可以用它生成新的數(shù)組。 var arr =new A...

    YPHP 評論0 收藏0
  • JavaScript MVC 學(xué)習(xí)筆記(六)模型ORM

    摘要:模型應(yīng)當(dāng)從視圖和控制器中解耦出來。與數(shù)據(jù)操作和行為相關(guān)的邏輯都應(yīng)當(dāng)放入模型中,通過命名空間進(jìn)行管理。在應(yīng)用中,對象關(guān)系映射也是一種非常有用的技術(shù),它可以用來做數(shù)據(jù)管理及用做模型。以基于的富應(yīng)用開發(fā)為主要學(xué)習(xí)資料。 MVC 和命名空間 要確保應(yīng)用中的視圖、狀態(tài)和數(shù)據(jù)彼此清晰分離,才能讓架構(gòu)更加整潔有序且更加健壯。模型應(yīng)當(dāng)從視圖和控制器中解耦出來。與數(shù)據(jù)操作和行為相關(guān)的邏輯都應(yīng)當(dāng)放入模型...

    mrcode 評論0 收藏0
  • JavaScript正則表達(dá)式學(xué)習(xí)筆記(二) - 打怪升級

    摘要:本文接上篇,基礎(chǔ)部分相對薄弱的同學(xué)請移步正則表達(dá)式學(xué)習(xí)筆記一理論基礎(chǔ)。正則表達(dá)式標(biāo)志符全局匹配,即找到所有匹配的。方法返回結(jié)果的格式不一致問題這個問題上文正則表達(dá)式學(xué)習(xí)筆記一理論基礎(chǔ)也有體現(xiàn),這里再單獨拿來說一說,以加深記憶。 showImg(https://segmentfault.com/img/remote/1460000014261596?w=600&h=338); 本文接上篇...

    Jioby 評論0 收藏0
  • javascript設(shè)計模式學(xué)習(xí)筆記策略模式

    摘要:策略模式策略模式指的是定義一系列的算法,把它們一個個封裝起來,將不變的部分和變化的部分隔開,實際就是將算法的使用和實現(xiàn)分離出來這樣就能避免很多的條件判斷并且增強了代碼的復(fù)用性其中包含一個策略類和一個環(huán)境類計算獎金的例子策略類環(huán)境類設(shè)置原始工 策略模式 策略模式指的是 定義一系列的算法,把它們一個個封裝起來,將不變的部分和變化的部分隔開,實際就是將算法的使用和實現(xiàn)分離出來, 這樣就能避...

    wh469012917 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<