號外!號外!超全的陣列方法,不看後悔啊!!

好想吃涼皮發表於2018-04-06

Array物件

concat()連線兩個或更多的陣列,並返回結果。
join()把陣列的所有元素放入一個字串。元素通過指定的分隔符進行分隔。
pop()刪除並返回陣列的最後一個元素
push()向陣列的末尾新增一個或更多元素,並返回新的長度。
reverse()顛倒陣列中元素的順序。
shift()刪除並返回陣列的第一個元素
slice()從某個已有的陣列返回選定的元素
sort()對陣列的元素進行排序
splice()刪除元素,並向陣列新增新元素。
toSource()返回該物件的原始碼。
toString()把陣列轉換為字串,並返回結果。
toLocaleString()把陣列轉換為本地陣列,並返回結果。
unshift()向陣列的開頭新增一個或更多元素,並返回新的長度。
valueOf()返回陣列物件的原始值

函式方法

1,forEach() (es5)

forEach,for in , for,for of的區別

let arr = [1,2,3,4,6];
arr.w = 100 //陣列的私有屬性
arr.forEach((item)=>{ //不能return,必會執行完。
    console.log(item)
})
for(let val of arr){ //支援return 並且是值of陣列(不能遍歷物件)
    console.log(val)
}

for(let key in arr){//key 會變成字串,包括資料的私有屬性也可以列印出來
console.log( typeof key)
}複製程式碼

2,filter() 過濾

//filter 過濾)   是否操作原陣列:不會 ;    這個方法返回結果:過濾後的新陣列  ;  回撥函式的返回結果:true,這一項放到新陣列
 let aaa = arr.filter(item=>{
    return item<5
})
console.log(aaa)複製程式碼

3,map() 對映

複製程式碼
//map 對映  降原有的陣列對映成一個新陣列  )不操作原陣列;返回新陣列;回撥函式中返回什麼就是什麼
// 要對映一個結果為:<li>1</li><li>2</li><li>3</li><li>4</li><li>6</li>
let map = arr.map(item=>{
    return `<li>${item}</li>` //``是es6中的模板字串,遇到變數用${}取值
})
console.log(map.join(''))複製程式碼

4,some()

//some)同find一樣只不過返回的不是找到的那一項,返回的是true;也是找到後停止,找不到就是false複製程式碼

5,every()

//every)找到false後停止返回false複製程式碼

6,reduce()

// reduce 收斂  :4個引數,返回的是疊加後的結果,原陣列不變。回撥函式返回的結果:
//prev代表的是陣列的第一項,next是陣列的第二項
//第二次的prev是undefined,next是陣列的第三項
let sum1 = arr.reduce(function (prev,next,index,item) {
   console.log(arguments)
    console.log(prev,next)
    return 100 //本次的返回值會作為下一次的prev
})
console.log(sum1)

let sum2 = [{price:20,count:2},{price:20,count:3},{price:20,count:4}].reduce(function(prev,next){
    //0+40
    //40+60
    //100+80
    return prev+next.price*next.count
},0)  //這可以指定第一次的prev是0,因為每次返回的是值所以這樣最方便
console.log(sum2)複製程式碼

7,includes()

//includes   ) 返回是Boolean
let arr3 = [1,2,55,555]
console.log(arr3.includes(5))複製程式碼

8,find()

//find ) 返回找到的那一項,不會改變陣列,回撥函式中返回true表示找到了,然後停止迴圈,找不到返回undefined;
let find = arr3.find(function (item,index) {
    return item.toString().indexOf(5)>-1
})
console.log(find)複製程式碼


相關文章