Javascript Array數(shù)組初探

1.創(chuàng)建方法

1.直接創(chuàng)建
var arr=new Array(); //()可以傳遞參數(shù),表示數(shù)組長(zhǎng)度,也可以不傳
2.數(shù)組字面量
var arr=[2,4,,5,6] ;

2.檢測(cè)方法

  1. instanceof
    eg:
arr=[1,3,4];
arr instanceof Array;//true
 >2. isArray()
 eg:
Array.isArray(arr);//true;

3.頭尾刪除添加方法

因?yàn)閖s中數(shù)組長(zhǎng)度是可變的,所以不用預(yù)先設(shè)置其長(zhǎng)度或申請(qǐng)空間;

  1. 頭部增加元素:arr.unshift(value1,value2,value3,...);
    //數(shù)組前端添加任意個(gè)項(xiàng)并返回修改后數(shù)組長(zhǎng)度;
  2. 尾部添加元素:arr.push(value1,value2,value3,...);
    //數(shù)組尾端添加任意個(gè)項(xiàng)并返回修改后數(shù)組長(zhǎng)度;
    3.頭部刪除元素:
    arr.shift();//移除數(shù)組的第一項(xiàng)并返回該項(xiàng);
  3. 尾部添加元素:
    arr.pop();/移除數(shù)組的最后一項(xiàng)并返回該項(xiàng);

4.排序方法

因?yàn)閿?shù)組自身提供的arr.sort()函數(shù)字符順序進(jìn)行排序的,所以當(dāng)數(shù)字大于10的情況下,就很可能發(fā)生錯(cuò)誤,所以我們需要自定義排序方法;
error example:

  var values=[10,1,5,10,15];
  values.sort();
  console.log(values);//0,1,10,15,5

重寫(xiě)方法:

  function compare(a,b){
        if(a>b){
            return 1;
        }
      else if(a<b){
          return -1;      
      }
     else{
          return 0;
      }
}

5.數(shù)組操作方法

1.splice()方法刪除:

arr.splice(起始位置,分割長(zhǎng)度),下標(biāo)從0開(kāi)始;
eg:
arr=[2,5,1,89,23,14,67]
arr.splice(2,2);
arr為[2, 5, 23, 14, 67]

2..splice()方法插入:
1.只插入不刪除(第一個(gè)參數(shù)表示開(kāi)始的下標(biāo)位置,第二個(gè)參數(shù)為0即可表示不刪除,后面元素個(gè)數(shù)可選,表示要插入的元素)

arr=[2, 5, 1, 89, 23, 14, 67]
arr.splice(3,0,100);
arr為[2, 5, 1, 100, 89, 23, 14, 67]
arr.splice(3,0,0,0)
arr為[2, 5, 1, 0, 0, 100, 89, 23, 14, 67]

2.刪除又插入(即替換)(第一個(gè)參數(shù)表示開(kāi)始的下標(biāo)位置,第二個(gè)參數(shù)表示刪除的元素個(gè)數(shù),后面元素個(gè)數(shù)可選,表示要插入的元素)

arr=[2, 5, 1, 89, 23, 14, 67]
a.splice(2,2,6)
arr為[2, 5, 6, 23, 14, 67]


3.slice()方法截?。?返回一個(gè)新數(shù)組,不影響當(dāng)前數(shù)組)
1.一個(gè)參數(shù):表示當(dāng)前位置到數(shù)組末尾的所有項(xiàng)

arr=[2,4,6,7,8,1,4];
var result=arr.slice(3);
result為:[7, 8, 1, 4];

2.兩個(gè)參數(shù):起始位置和結(jié)束位置,不包括結(jié)束位置的項(xiàng)

arr=[2,4,6,7,8,1,4];
var result=arr.slice(3,6);
result為:[7, 8, 1];

PS:數(shù)組長(zhǎng)度為負(fù)數(shù)時(shí),表示數(shù)組長(zhǎng)度+該數(shù);
結(jié)束位置小于開(kāi)始位置時(shí),返回空數(shù)理;

4.indexOf()和lastIndexOf()方法:

參數(shù):第一個(gè)參數(shù)表示要查找的項(xiàng),第二個(gè)參數(shù)表示開(kāi)始查找位置(可選);
indexOf():從頭開(kāi)始向后查找;
lastIndexOf():從數(shù)組的末尾往前查找;

arr=[2,4,6,7,8,1,4];
arr.indexOf(4); result:1
arr.lastIndexOf(4); result:6
arr.indexOf(4,3); result:6
arr.lastIndexOf(4,3) result:1

5.迭代方法
1.every():對(duì)數(shù)組的每一項(xiàng)運(yùn)行給定函數(shù),函數(shù)每一項(xiàng)都返回true,則返回true;
    arr=[3,5,7,1,9,5,3];
    let flag=arr.every(function(item){
          return item>0;
    });
    alert(flag);//true;
 arr=[3,5,7,1,9,5,3];
    let flag=arr.every(function(item){
          return item>5;
    });
    alert(flag);//false;
2.some():對(duì)數(shù)組的每一項(xiàng)執(zhí)行給定函數(shù),如果數(shù)組的某一項(xiàng)返回true,則返回true;
    arr=[3,5,7,1,9,5,3];
    let flag=arr.some(function(item){
          return item===9;
    });
    alert(flag);//true;
    arr=[3,5,7,1,9,5,3];
    let flag=arr.some(function(item){
          return item>10;
    });
    alert(flag);//false;
3.map():對(duì)數(shù)組的每一項(xiàng)執(zhí)行給定函數(shù),返回每次調(diào)用函數(shù)的結(jié)果組成的數(shù)組;
    arr=[3,5,7,1,9,5,3];
    let result=arr.map(function(item){
          return item*5;
    });
    alert(result);//[15, 25, 35, 5, 45, 25, 15];
4.filter():對(duì)數(shù)組的每一項(xiàng)執(zhí)行給定函數(shù),返回每次調(diào)用函數(shù)結(jié)果為true的項(xiàng)組成的數(shù)組;
    arr=[3,5,7,1,9,5,3];
    let result=arr.filter(function(item){
          return item>5;
    });
    alert(result);//[7, 9];
5.reduce():迭代數(shù)組的所有項(xiàng),返回一個(gè)最終值

回調(diào)函數(shù)接收四個(gè)參數(shù):前一個(gè)值,當(dāng)前值,項(xiàng)的索引和數(shù)組對(duì)象;第一次迭代發(fā)生在數(shù)組的第二項(xiàng)上;

    arr=[3,5,7,1,9,5,3];
    let result=arr.reduce(function(prev,cur,index,array){
          return prev+cur;
    });
    alert(result);//33;

PS:reduceRight():和reduce一樣,主要區(qū)別在于reduceRight()從數(shù)組的最后一項(xiàng)開(kāi)始遍歷數(shù)組,直到數(shù)組的第一項(xiàng);


希望我的文章可以幫助到你,謝謝~~


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Javascript有很多數(shù)組的方法,有的人有W3C的API,還可以去MDN上去找,但是我覺(jué)得API上說(shuō)的不全,M...
    頑皮的雪狐七七閱讀 4,220評(píng)論 0 6
  • 數(shù)組的定義 數(shù)組是按序號(hào)排列的一組值,每個(gè)值的位置都有編號(hào)(從0開(kāi)始)。數(shù)組本質(zhì)上是一種特殊的對(duì)象。它的鍵名是按(...
    Allin_Lin閱讀 579評(píng)論 0 0
  • 此文章用于歸納Array的所有方法 在JavaScript中,除了Object,用得最多的可能就是數(shù)組Array了...
    moonburn閱讀 292評(píng)論 1 3
  • 一、數(shù)組方法里push、pop、shift、unshift、join、split分別是什么作用。 (1).arr....
    饑人谷區(qū)子銘閱讀 549評(píng)論 0 3
  • 數(shù)組的創(chuàng)建 數(shù)組是值的有序集合。每個(gè)值叫做元素,每個(gè)元素在數(shù)組中都有數(shù)字位置編號(hào),也就是索引。JS中的數(shù)組是弱類型...
    supa同學(xué)閱讀 497評(píng)論 0 3