摘要:數(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])//42.數(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)為字符串。
數(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)//false5.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
摘要:學(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...
摘要:方法用于刪除原數(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...
摘要:模型應(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)放入模型...
摘要:本文接上篇,基礎(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); 本文接上篇...
摘要:策略模式策略模式指的是定義一系列的算法,把它們一個個封裝起來,將不變的部分和變化的部分隔開,實際就是將算法的使用和實現(xiàn)分離出來這樣就能避免很多的條件判斷并且增強了代碼的復(fù)用性其中包含一個策略類和一個環(huán)境類計算獎金的例子策略類環(huán)境類設(shè)置原始工 策略模式 策略模式指的是 定義一系列的算法,把它們一個個封裝起來,將不變的部分和變化的部分隔開,實際就是將算法的使用和實現(xiàn)分離出來, 這樣就能避...
閱讀 2901·2021-11-22 09:34
閱讀 1223·2021-11-19 09:40
閱讀 3349·2021-10-14 09:43
閱讀 3578·2021-09-23 11:22
閱讀 1612·2021-08-31 09:39
閱讀 894·2019-08-30 15:55
閱讀 1422·2019-08-30 15:54
閱讀 864·2019-08-30 15:53