私人定制javascript中數組小知識點(Only For Me)
先上笑話,1.剛看到一個游泳的,想起公司組織去三亞旅游,老板跳海里,各種掙扎,撈上來老板第一句話:我記得我會游泳的啊。
2.媳婦說:老公對不起,我把你新買的自行車撞散架了! 老公:沒事寶貝,你若安好,便是晴天! 媳婦說:老公你太有詩意了。 老公:滾犢子,安不好我整死你!
數組的概念
javascript數組是值得有序集合,不過它實屬一個javascript對象的特殊形式,這是一個很重點的定性。
創建數組
1.var a=new Array();//等同于[]
2.var a=new Array(10); //指定長度的數組
3.var a=new Array(1,2,“marry you”);
4.var a=[];
數組是動態的
首先數組是可以通過[]來訪問數組元素,使用此語法可以讀寫數組,其中[]內的是小于232非負整數作為屬性名時數組會自動維護其length。首先清晰的區分數組的索引和對象的屬性名,所有的索引都是屬性名,但只有0~232-2之間的整數屬性名才是索引。
所有的數組都是對象,可以給數組對象創建任意名字的屬性。但是如果使用的屬性是數組的索引,數組的特殊行為就會更具需要去更新其length屬性值。
這會糾正一個javascript數組“越界”錯誤的概念,如果試圖訪問數組索引超出其長度,則不會報錯,只會返回undefined值。
稀疏數組和稠密數組
概念是值包含從0開始的不連續索引的數組。也可以這么理解,就是length屬性值大于元素的個數。那么這樣就會比正常的稠密數組在內存利用率更高,但查找效率基本一致。
此時可以用in來檢測
var a1=[,,,];
0 in a1//false
數組元素的添加和刪除
最簡單的刪除方式是var a=[1,2,4]; a.length=0;
同樣你也可以用Object.defineProperty()讓數組length屬性變成只讀
var a=[1,2,4]; Object.defineProperty(a,"length",{writable:false}); a.length=0; console.log(a); //[1, 2, 4]
添加用push(1,3,4,5,7)//此處可以一次性添加多個元素
delete a[1]是不會修改數組a的length屬性,就相當于給刪除元素位置賦值undefined值,那么改數組也就變成了稀疏數組了。所以應該用pop()該函數會返回刪除的元素
數組遍歷
遍歷數組用for/in或for。前者遍歷是沒有一定順序,所以可以用forEach(ECMAScript 5中的新增的函數)或者for來代替,同時遍歷是最好緩存數組長度例如
for(var i=0,alength=a.length;i++){ //循環體 } for(var i in a){ if(!a.hasOwnProperty(i)){ continue; //跳出循環體 //循環體 } }
數組的方法
常用方法有join()/reverse()/sort()/concat()/slice()/splice()/push()/pop()/unshift()/shift()/toString()/toLocalString()
如果你對以上都了解,那么我還是想說說其中一個方法
如果用排序少不了sort它是按照字符排序,如果遇到數字或者對一些處理后的字符排序怎么做呢
sort()該方法可以傳一個匿名函數作為參數,該匿名函數就可以滿足我們的一些特殊要求了,
a=['a',"bug","Good","ccc"]; a.sort(function(s,t){ var a=s.toLowerCase(); var b=t.toLowerCase(); if(a<b) return -1; if(a>b) return 1; return 0; }); //["a", "bug", "ccc", "Good"]
ECMAScript 5中新增數組方法
forEach()//遍歷數組,按順序輸出,如果要break;就要用try catch來輔助了。
map()// a=[1,2,3]; a.map(function(x){return x*x;}) //[1,4,9];
filter()//a=[5,3,4,5,6]; a.filter(function(x,i){return i%2==0});//[4,6]
every()/some()/reduce()/reduceRigth()/indexOf()/lastIndexOf()等如果不知道就谷哥吧。
這里要說一點的是字符串的行為類似于數組的事實使得通用的數組方法可以應用到字符串上。
例如:
Array.prototype.filter.call("javascript",function(x){return x.match(/[^aeiou]/);}).join("");
//"jvscrpt"
結束語
簡單總結就是數組表現出來的很多東西的本質其實是因為它是對象而決定的。數組中大多數的方法都是通用的,這就意味著它不僅對數組對象有效,而且對”類數組對象同樣有效“如字符串行為就與字符數組類似。如果你覺得不錯,那就推薦一下。

浙公網安備 33010602011771號