JS基礎--Array

來源:互聯網
上載者:User

標籤:

一、特點

  1. 資料類型的多變;
  2. 數組大小可動態調整;
  3. 有length屬性,且length屬性不是唯讀,可以設定;

二、建立方法

  1. 使用Array建構函式;
    var arr=new Array();var arr=new Array(20);var arr=new Array("arr1","arr2","arr3");
  2. 數組字面量標記法
    var arr=["arr1","arr2","arr3"];var arr=[];

三、檢測數組

value instanceof Array;Array.isArray(value);//value 為數組

 

四、轉換方法

toString(),toLocaleString()返回的都是字串,並以,分隔

join()返回的也是字串,以join函數內部的參數分隔,對原數組沒有影響

valueOf()返回的是數組,可以通過這種方式將一個數組賦給另一個數組若對這個數組操作會對原數組有一樣的操作。

若某一項為null或者為undefined時,那麼在join(),toLocaleString(),toString()中以Null 字元串表示

var arr=["arr1","arr2","arr3"];console.log(arr.toString());//arr1,arr2,arr3console.log(arr.toLocaleString());//arr1,arr2,arr3console.log(arr.valueOf());//["arr1", "arr2", "arr3"],可以通過這種方式將一個數組賦值給另一個數組,若對這個數組操作,會對原數組有一樣的操作。console.log(arr);//["arr1", "arr2", "arr3"]console.log(arr.join("||"));//arr1||arr2||arr3 返回字串,對原數組沒有改變
//若某一項為null或者為undefined時,那麼在join(),toLocaleString(),toString()中以Null 字元串表示

五、棧方法

push()返回修改後數組長度

pop()返回取出的元素,從arr[arr.length-1]開始取

var arr=["arr1"];var count=arr.push("arr2","arr3");//返回修改後數組長度console.log(count);//3console.log(arr);//["arr1","arr2","arr3"]var theTop=arr.pop();//返回取出的元素,從arr[arr.length-1]開始取console.log(theTop);//arr3字串console.log(arr);//["arr1","arr2"]

 

六、 隊列方法

shift()返回取出的元素,從arr[0]開始取

unshift()在前面增加,增加arr[0],返回修改後的長度

var arr=[];var count=arr.push("arr1","arr2");//返回修改後數組長度console.log(count);//2console.log(arr);//["arr1","arr2"]var theBottom=arr.shift();//返回取出的元素,從arr[0]開始取console.log(theBottom);//arr1字串console.log(arr);//["arr2"]var count=arr.unshift("arr1","arr0");//在前面增加,增加arr[0]console.log(count);//3,返回修改後的長度console.log(arr);//["arr1", "arr0", "arr2"]

 

七、重排序方法

reverse逆向輸出,改變原數組

sort升序排序,比較的是字串,要解決這個問題,只需要在sort中傳入一個函數就可以

函數為

arr.sort(function(a,b){ return b-a});//b-a從大到小,a-b從小到大

//reverse逆向輸出
var arr=[0,1,5,10,15];arr.reverse();//逆向輸出console.log(arr);//[15, 10, 5, 1, 0]
//sort升序排序arr.sort();//升序排序,比較的是字串console.log(arr);//[0, 1, 10, 15, 5]//sort解決方案arr.sort(function(a,b){ return b-a});//b-a從大到小,a-b從小到大console.log(arr);//[15, 10, 5, 1, 0]

八、操作方法

concat()串連,不影響原數組

slice()複製新數組,不影響原數組

splice()刪除,在原數組上操作,返回刪除項組成的數組


//concat串連var arr=["arr1","arr2"];var arrs=arr.concat("arr3",["arr4","arr5"]);//不影響原數組console.log(arr);//["arr1", "arr2"]console.log(arrs);//["arr1", "arr2", "arr3", "arr4", "arr5"]//slice複製新數組var arrs1=arrs.slice(1);//不影響原數組var arrs2=arrs.slice(1,4);//不影響原數組,相當於arrs.slice(-4,-1),負數加上數組長度再進行擷取新數組console.log(arrs1);//["arr2", "arr3", "arr4", "arr5"],不影響原數組console.log(arrs2);//["arr2", "arr3", "arr4"]//splice刪除var removed=arr.splice(0,1,"arr1_1","arr1_2");//在0的位置開始刪除1項,插入2項console.log(arr); //["arr1_1", "arr1_2", "arr2"]console.log(removed);//["arr1"]返回刪除的項組成的數組

九、位置方法

indexOf從前往後尋找

lastIndexOf從尾部尋找

未找到的情況下都為-1

//indexOf從前往後尋找var arr=[1,2,3,4,5,4,3,2,1];console.log(arr.indexOf(4));//3,返回4所在位置console.log(arr.indexOf("4"));//-1,未找到的情況下為-1,按===尋找//lastIndexOf從尾部尋找console.log(arr.lastIndexOf(4));//5,返回4所在位置console.log(arr.lastIndexOf("4"));//-1,未找到的情況下為-1,按===尋找var person={name:"XXX"};//對象var people=[{name:"XXX"}];//數組,含一項,這一項是一個對象(跟person無關)var morePeople=[person];//數組,含一項,這一項是一個person對象console.log(people.indexOf(person));//-1,people數組中不含person對象console.log(morePeople.indexOf(person));//0,morePeople數組中含person對象,為第一項


十、迭代方法

every(),每一項都滿足則返回true,否則返回false

filter(),返回滿足條件的項組成的數組,對原數組沒有影響

forEach(),相當於for迴圈

map(),對數組進行操作,對原數組沒有影響

some(),至少一項滿足則返回true,否則返回false

var numbers=[1,2,3,4,5,4,3,2,1];//every,每一項都滿足則返回true,否則返回falsevar everyResult=numbers.every(function(item,index,array){  return (item>2);});console.log(everyResult);//false//filter,返回滿足條件的項組成的數組,對原數組沒有影響var filterResult=numbers.filter(function(item,index,array){  return (item>2);});console.log(filterResult);//[3, 4, 5, 4, 3]console.log(numbers);//[1,2,3,4,5,4,3,2,1]//forEach,相當於for迴圈numbers.forEach(function(item,index,array){  //執行某些操作});////map,對數組進行操作,對原數組沒有影響var mapResult=numbers.map(function(item,index,array){  return (item*2);});console.log(mapResult);// [2, 4, 6, 8, 10, 8, 6, 4, 2]console.log(numbers);//[1,2,3,4,5,4,3,2,1]//some,至少一項滿足則返回true,否則返回falsevar someResult=numbers.some(function(item,index,array){  return (item>2);});console.log(someResult);//true

十一、歸併方法

reduce(),第一遍prev=1,cur=2(第二項),第二遍prev=3(1+2),cur=3(第三項)

reduceRight(),第一遍prev=5,cur=4(第四項),第二遍prev=9(5+4),cur=3(第三項)

reduce(),和reduceRight()遍曆方向不同,除此之外都相同

var numbers=[1,2,3,4,5];//reduce,第一遍prev=1,cur=2(第二項),第二遍prev=3(1+2),cur=3(第三項)var sum=numbers.reduce(function(prev,cur,index,array){  return prev+cur;});console.log(sum);//15//reduceRight,第一遍prev=5,cur=4(第四項),第二遍prev=9(5+4),cur=3(第三項)var sum=numbers.reduce(function(prev,cur,index,array){  return prev+cur;});console.log(sum);//15//reduce,和reduceRight遍曆方向不同,除此之外都相同

JS基礎--Array

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.