js中數組的方法

1、ECMScript 3中數組的操做方法數組

    1.push和pop函數

      push在數組的末尾添加一個或者多個元素,返回新數組的長度。因此不能鏈式操做
      pop刪除數組的最後一個元素,返回它刪除的值元素
spa

var arr = [1, 2, 3, 4, 5];
var arr1=arr.push(6);
console.log(arr1)//6
console.log(arr)//[1,2,3,4,5,6]
var arr2 = arr.pop();
console.log(arr2)//6
console.log(arr);//[1,2,3,4,5]

 

   2.unshifh和shiftcode

   unshift是在數組頭部添加一個或多個元素。若是一次性傳入多個參數,多個參數按照按照原先的位置直接加到數
   組中。返回新數組的新數組的長度。
   shift:刪除數組的第一個元素,並返回刪除的元素對象

var arr = [1, 2, 3, 4, 5];
var arr1=arr.unshift(6);
console.log(arr1)//6
console.log(arr)//[6,1,2,3,4,5]
var arr2 = arr.unshift();
console.log(arr2);//6
console.log(arr);//[1,2,3,4,5]

  3.concatblog

   concat 鏈接 該方法的做用是給數組鏈接新成員 參數有任意個,都是會被拼接到新數組中的成員 若是參數中有數組 會把這個數組拆開排序

    返回值是鏈接完畢的新數組,它不會改變原來的數組
 var arr = [1];
 var arr1 = [2, 3];
  // 把arr 和 arr1 鏈接起來
  var arr2 = arr.concat(10, 20, 33, arr1);
  console.log(arr2);//[1,10,20,33,2,3]

  4.reverse索引

    將一個數組逆序 返回值是原數組 也會影響到原數組ip

 var arr = ["a", "b", "c", "d", "e"];
 var arr1 = arr.reverse();
 console.log(arr);//["e", "d", "c", "b", "a"]
 console.log(arr1);//["e", "d", "c", "b", "a"]

5.sort 字符串

  排序

  該方法只適用於內部成員都是數字的狀況
       var arr = [1, 11, 44, 4, 5, 67, 6, 78, 345, 89, 8];
        //若是不傳遞參數 會按照第一位數的數字從小到大排序
        arr.sort();
        console.log(arr);//[1, 11, 345, 4, 44, 5, 6, 67, 78, 8, 89]
        //若是傳遞參數 參數是一個函數 該函數有兩個參數 a b 若是返回a - b 則升序排列 若是 
        返回b - a則降序排列
        arr.sort(function(a, b) {
            return b - a;
        });
        console.log(arr);//[345, 89, 78, 67, 44, 11, 8, 6, 5, 4, 1]

6.join

     該方法用於將數組以參數做爲間隔轉換成字符串
      參數默認是 ","
 var arr = [1, 2, 3, 4, 5, 6, 7, 8];
 console.log(arr.join(""));//12345678
        

7.slice(start,end)

   該方法用於截取一段數組中的成員
                start: 開始截取的下標位置
                end: 結束截取的下標位置(不包含)
                左閉右開:包含左側 不包含右側
               能夠接收一個參數 表示從start截取到最後
            能夠不接收參數 表示所有截取
            參數能夠是負數 表示從後往前數(負數是從-1開始)
            若是第一個參數比第二個參數要大 截取的是空數組

 

  var arr = [1, 2, 3, 4, 5, 6, 7, 8];
  var arr1 = arr.slice(2, 6); // [3, 4, 5, 6]
   var arr2 = arr.slice(2);  // [3, 4, 5, 6, 7, 8]
   var arr3 = arr.slice(); // [1, 2, 3, 4, 5, 6, 7, 8]
   var arr4 = arr.slice(0, -1);  // [1, 2, 3, 4, 5, 6, 7];
    var arr5 = arr.slice(-4, -1); // [5, 6, 7]
    var arr6 = arr.slice(-4);  // [5, 6, 7, 8]

 

8.splice

     splice(pos, num, ...) 該方法用於操做數組
                pos: 表示操做數組的位置
                num: 表示要刪除幾項
                以後的每個成員表示要向pos位置插入的成員
 var arr = [1, 2, 3, 4, 5, 6, 7, 8];
        //1 將3移除
        var result = arr.splice(2, 1);
        console.log(arr);
        console.log(result);
       // 2 將3替換成9
        var result = arr.splice(2, 1, 9);
        console.log(arr);
        console.log(result);
        //3 在5前面插入5個1
        var result = arr.splice(4, 0, 1, 1, 1, 1, 1);
        console.log(arr);
        console.log(result);
        //4 當都只傳遞1個參數時 默認從該位置日後都移除
        var result = arr.splice(1);
        console.log(arr);
        console.log(result);

 2、ECMScript 5中的數組方法

 一、forEach()  //遍歷
該方法從頭至尾遍歷數組,爲某個元素調用指定的函數。傳遞函數包括三個參數(數組元素、元素索引、數組自己
),若是隻關心數組元素的值,能夠只傳一個參數。
注意:沒法在全部元素的都傳遞給調用函數以前提早結束。也就是沒有像for中同樣的break語句。若是要提交終止,能夠
把forEach()方法放到try塊中。若是forEach()調用的函數拋出forEach.break異常,循環提早結束

var data = [1,2,3];
var sum = 0;
data.forEach(function(value){
  sum+=value;
});
console.log(sum);  //6
 
var data = [10,20,30];
data.forEach(function(v,i,a){
  a[i] = v*2;
});
console.log(data) //[20, 40, 60]

二、map()     //映射
定義:將調用的數組的每一個元素傳遞給指定的函數,並返回一個新數組,它包含該該函數的返回值
注意:傳遞給map的函數應該有返回值,返回的是新數組,不修改調用的數組。

 

var data3 = [1,2,3];
var b = data3.map(function(val){
   return   val*10;
});
console.log(data3);  //[1,2,3]     不改變原數組
console.log(b);      //[10,20,30]  新數組

三、filter() //過濾
定義:返回的數組元素是調用的數組的一個子集,就傳遞的函數是用來作邏輯斷定的,返回true,傳給給斷定函數的元素就是這個子集的成員。

 

var data4 = [1,2,3,4,5];
var b2 = data4.filter(function(val){
  return val<3;
});
console.log(b2);     //[1,2]
console.log(data4);  //[1,2,3,4,5] 不改變原數組  
 
var b3 = data4.filter(function(val,i){
  return i%2;
});
console.log(b3);     //[2,4] 返回索引爲奇數的元素組成的數組

四、every() 

 

  every 該方法也是斷言方法 用於斷定數組中是否有存在符合某種條件的成員
                接收一個函數做爲參數
                    函數的第一個參數是成員 
                    函數的第二個參數是索引
                    函數的第三個參數是數組自己
                    函數要有返回值 一般是符合某種條件的斷定表達式
                返回值是一個布爾值 只要有任何一個成員不符合函數的描述 就返回假 都符合才返回真
 var arr = [1, 2, 3, 4, 5, 6, 7];

        var result = arr.every(function(value, index, self) {
            return typeof value === "number";
        });
        console.log(result);//true

5.some()

some 該方法屬於斷言方法 用於斷定數組中是否有存在符合某種條件的成員
                接收一個函數做爲參數
                    函數的第一個參數是成員 
                    函數的第二個參數是索引
                    函數的第三個參數是數組自己
                    函數要有返回值 一般是符合某種條件的斷定表達式
                返回值是一個布爾值 只要有任何一個成員符合了函數的描述 就返回真 都不符合才返回假
     var arr = [1, 2, 3, 4, 5, 6, 7, 8];
         var result = arr.some(function(value, index, self) {
            console.log(value);
            return typeof value === "string";
         });
         console.log(result);//false

 

六、reduce()
定義:使用指定的函數將數組元素進行組合,生成一個單值。參數一是執行簡化操做的函數,參數二是傳給簡化函數的初始值。

注意:一旦確認以後,就中止遍歷數組了。

var data5 = [1,2,3];
var sum = data5.reduce(function(x,y){
  return  x+y;
},0);
console.log(sum);  //6
 
var product = data5.reduce(function(x,y){
  return  x*y;
},100);
console.log(product);  //600

七、indexOf()和lastIndexOf()

定義:搜索整個數組中具備給定值的位子,返回找到第一個元素的索引,若是沒有找到就返回-1;indexOf()是從頭找到尾,lastIndexOf()正好相反
注意:不接受函數做爲參數,第一個參數是須要搜索的值,第二個參數是可選的,表示從哪裏搜索,能夠是負數,表示相對數組末尾的偏移量。
說明:字符串也有這兩個方法,功能相似。

var data6 = [1,2,3,3,4,3,5];
console.log(data6.indexOf(3)); //2 第一個3的索引是2

 8.fill()

 

fill 用於填充數組 接收3個參數 
                第一個參數是 填充數
                第二個參數是 填充的起始位置(可選)
                第三個參數是 填充的結束位置(可選)
 var arr = [1, 2, 3, 4, 5, 6];
        // 將數組的每個成員都填充爲0 
        arr.fill(0); 
        // 將數組的從第二個開始日後都填充爲0 
         arr.fill(0, 1);
        // 將數組的從第二個開始到第四個填充爲0
        arr.fill(0, 1, 4);
        console.log(arr);

3、ECMScript 6中的數組方法

1.find()

find 用於查詢數組中的成員 接收一個函數做爲參數
   函數有三個參數
  函數的第一個參數是成員
     函數的第二個參數是索引
     函數的第三個參數是數組自己
   該函數返回一個條件表達式
     返回符合函數條件表達式描述的第一個數組成員 若是找不到 返回undefined
       var arr=["12","23","345","45"]
                var result = arr.find(function(value,index,self){
                        return value.indexOf(23) !=-1;
                })
                console.log(arr)//["12","23","345","45"]
                 console.log(result)//23

2.findIndex()

      findIndex 用於查詢數組中的成員的索引 接收一個函數做爲參數
                函數有三個參數
                    函數的第一個參數是成員 
                    函數的第二個參數是索引
                    函數的第三個參數是數組自己
                    該函數返回一個條件表達式 
                返回符合函數條件表達式描述的第一個數組成員的索引 若是找不到 返回 -1
     
     var arr = ["張三", "李四", "王五", "趙六", "田七"];
        
        var usernameIndex = arr.findIndex(function(value, index, self) {
            return value.indexOf("五") != -1;
        });
         console.log(usernameIndex)//2

3.copyWithin()

copyWithin 負責數組的內部複製 接收三個參數
                第一個表示操做位置
                第二個表示複製的開始位置(包含)
                第三個表示複製的結束位置(不包含)
                操做結果: 從第二個參數開始複製到第三個參數 再將複製的成員 從第一個參數位置開始替換
    
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
        arr.copyWithin(0, 5, 7);
        console.log(arr);//[6, 7, 3, 4, 5, 6, 7, 8, 9]

4.Array.of() 

該方法用於定義數組
與new Array()不一樣的是爲一位數字時是就表示數組內容,而new Array()方法表示數組長度
var arr = Array.of(5,6,78,9)
console.log(arr);
var arr1 = Array.of(5);
var arr2 = new Array(5):

5.Array.from()

 

該方法用於將類數組對象 轉爲 數組
相關文章
相關標籤/搜索