javaScript操做數組的經常使用方法

map(映射), reduce(規約), forEach(遍歷), filter(過濾),它們都是高階函數,都是以傳入不一樣的函數來以不一樣的方式操做數組元。ie都不支持

判斷是否爲數組

  • Array.isArray(ele)
Array.isArray({})
//=>false
Array.isArray('')
//=> false
Array.isArray([])
//=>true

查找數組內指定元素位置

  • indexOf(ele) / .lastIndexOf(ele)
[1,2,3,4,2,3].indexOf(2)  //= > 1   從左到右返回第一個匹配的
[1,2,3,4,2,3].lastIndexOf(2) //=>   4   從右到左第一個匹配元素的位置

遍歷數組

  • forEach 爲每一個元素執行對應的方法
    遍歷數組,參數爲一個回調函數,回調函數有三個參數:當前元素,元素索引,整個數組
var a=new Array(1,2,3,4,5,6)
a.forEach(function(val,i,array){  //
       a[i]=val+1;
});
  • map 遍歷數組 ,參數爲一個回調函數,返回一個新數組
var a=new Array(1,2,3,4,5,6)
a.map((e,i)=>{
    return e*e
});
//=>[1, 4, 9, 16, 25, 36]
  • .reduce(function(v1,v2),value) / .reduceRight(function(v1,v2),value)
    遍歷數組,方法有兩個參數
  1. 回調函數,把兩個值合爲一個,並返回結果
  2. value ,一個初始值,可選
//不傳initialValue值
var arr = [1,2,3];
arr.reduce(function(pre,cur,index,arr){return pre+cur});
//結果 6
//累加了兩次

// 傳入initialValue 值

var arr = [1,2,3]
arr.reduce(function(pre,cur,index,arr){return pre+cur},10);
//結果16
//累加了3次,初始值爲10
//拼接全部的數組
var flattened = [[0, 1], [2, 3], [4, 5]].reduce( ( acc, cur ) => acc.concat(cur));

//輸出[0, 1, 2, 3, 4, 5]
  • filter(function(ele))
    返回原數組的一個子集,回調函數邏輯判斷爲true則返回,爲false和索引爲空則不返回,原數組保持不變
//排除掉小於10的值
var isBigEnough=(element)=> {
  return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]

數組轉字符串

  • join() 將數組裏面的全部項拼接成一個字符串
var a=[1,2,3,9,7]
a.join(',')
//=>"1,2,3,9,7"
//注意原數組不會被改變

數組去重

  • 用到Set對象和 Array.from()方法
a=[1,2,3,4,3,3,3,2]
var arr=new Set(a)
Array.from(arr)
//=>[1, 2, 3, 4]
  • filter 刪除重複項
arr.filter((item, pos) => arr.indexOf(item) === pos)
相關文章
相關標籤/搜索