私人定製javascript中的數組知識點

來源:互聯網
上載者:User

先上笑話,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()

如果你對以上都瞭解,那麼我還是想說說其中一個方法

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/script/

如果用排序少不了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"

結束語

簡單總結就是數組表現出來的很多東西的本質其實是因為它是對象而決定的。數組中大多數的方法都是通用的,這就意味著它不僅對數組對象有效,而且對”類數組對象同樣有效“如字串行為就與字元數組類似。如果你覺得不錯,那就推薦一下。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.