摘要:數組基礎篇數組的語法數組是按次序排列的一組值。屬性數組的屬性,返回數組的成員數量。通過設置的值改變數組的長度將屬性設為可以清空數組。類似數組的對象并不是數組,因為它們不具備數組特有的方法。
數組基礎篇 1.數組的語法
數組(array)是按次序排列的一組值。每個值的位置都有編號(從0開始)。
var arr=[1,2,3] //arr[0]=1
任何類型的數據,都可以放入數組。
var arr=[ 1, "a", undefined, null, true, {"name": "jack","age": 18}, function(){console.log(fn)} ] arr[5]//對象:{name: "jack", age: 18} arr[6]//函數:? (){console.log(fn)}
多維數組
var a = [[1, 2], [3, 4]]; console.log(a[0][0])//1 console.log(a[1][1])//42.數組的特點
數組是對象,typeof運算符會返回數組的類型是object
數組的特殊性體現在,它的鍵名是按次序排列的一組整數(0,1,2…)。
var arr = ["a","b","c"]; console.log(typeof(arr))//object console.log(Object.keys(arr))// ["0", "1", "2"]
上面代碼中,可以看到數組成員的鍵名是固定的(默認總是0、1、2…)
JavaScript 語言規定,對象的鍵名一律為字符串,所以,數組的鍵名其實也是字符串。之所以可以用數值讀取,是因為非字符串的鍵名會被轉為字符串。
數組的length屬性,返回數組的成員數量。
JavaScript 使用一個32位整數,保存數組的元素個數。這意味著,數組成員最多只有 4294967295 個(2^32 - 1)個,也就是說length屬性的最大值就是 4294967295。
只要是數組,就一定有length屬性。該屬性是一個動態的值,等于整數鍵名中的最大整數加上1。
通過設置length的值改變數組的長度
將length屬性設為0可以清空數組。
如果設置length大于當前數組元素個數,則數組的長度會增加到這個值,新增的位置都是空位,讀取新增的位置都會返回undefined。
length的值只能是正整數,其他值會報錯
值得注意的是,由于數組本質上是一種對象,所以可以為數組添加屬性和屬性值,但是這不影響length屬性的值。
4.in運算符檢查某個鍵名是否存在的運算符in,適用于對象,也適用于數組。
var arr=["a","b","c"] console.log(1 in arr)//true console.log(3 in arr)//false
如果數組的某個位置是空位,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 循環和數組的遍歷
for...in循環不僅可以遍歷對象,也可以遍歷數組,因為數組也是對象。
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循環遍歷數組
6.類數組如果一個對象的所有鍵名都是正整數或零,并且有length屬性,那么這個對象就很像數組,語法上稱為“類似數組的對象”。
類似數組的對象”并不是數組,因為它們不具備數組特有的方法。
“類似數組的對象”的根本特征,就是具有length屬性。這種length屬性不是動態值,不會隨著成員的變化而變化。
將類數組轉換為數組的方法
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
類數組也可以通過call()方法可以調用數組的方法。
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
字符串也是類似數組的對象,所以也可以用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()方法比直接使用數組原生的forEach要慢,所以最好還是先將類數組轉為真正的數組,再調用數組的forEach方法。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107709.html
摘要:學習筆記之數組二輸出什么為什么有三個參數數組元素,元素索引,數組本身有兩個參數元素本身以及進制語法參數可選。表示要解析的數字的基數。如果該參數小于或者大于,則將返回。當參數的值為或沒有設置該參數時,會根據來判斷數字的基數。 JavaScript學習筆記之數組(二) 1.[1,2,3].map(parseInt) 輸出什么,為什么? [1,2,3].map(parseInt)//[1,N...
摘要:方法用于刪除原數組的一部分成員,并可以在刪除的位置添加新的數組成員,返回值是被刪除的元素。,這兩個方法,返回一個布爾值,表示判斷數組成員是否符合某種條件。該函數接受三個參數當前成員當前位置和整個數組,然后返回一個布爾值。 數組基礎篇二 數組對象 1.聲明數組的方法 Array是 JavaScript 的原生對象,同時也是一個構造函數,可以用它生成新的數組。 var arr =new A...
摘要:模型應當從視圖和控制器中解耦出來。與數據操作和行為相關的邏輯都應當放入模型中,通過命名空間進行管理。在應用中,對象關系映射也是一種非常有用的技術,它可以用來做數據管理及用做模型。以基于的富應用開發為主要學習資料。 MVC 和命名空間 要確保應用中的視圖、狀態和數據彼此清晰分離,才能讓架構更加整潔有序且更加健壯。模型應當從視圖和控制器中解耦出來。與數據操作和行為相關的邏輯都應當放入模型...
摘要:本文接上篇,基礎部分相對薄弱的同學請移步正則表達式學習筆記一理論基礎。正則表達式標志符全局匹配,即找到所有匹配的。方法返回結果的格式不一致問題這個問題上文正則表達式學習筆記一理論基礎也有體現,這里再單獨拿來說一說,以加深記憶。 showImg(https://segmentfault.com/img/remote/1460000014261596?w=600&h=338); 本文接上篇...
摘要:策略模式策略模式指的是定義一系列的算法,把它們一個個封裝起來,將不變的部分和變化的部分隔開,實際就是將算法的使用和實現分離出來這樣就能避免很多的條件判斷并且增強了代碼的復用性其中包含一個策略類和一個環境類計算獎金的例子策略類環境類設置原始工 策略模式 策略模式指的是 定義一系列的算法,把它們一個個封裝起來,將不變的部分和變化的部分隔開,實際就是將算法的使用和實現分離出來, 這樣就能避...
閱讀 2882·2021-11-22 09:34
閱讀 1212·2021-11-19 09:40
閱讀 3335·2021-10-14 09:43
閱讀 3566·2021-09-23 11:22
閱讀 1601·2021-08-31 09:39
閱讀 880·2019-08-30 15:55
閱讀 1414·2019-08-30 15:54
閱讀 854·2019-08-30 15:53