數(shù)組在JS中雖然沒有函數(shù)地位那么高,但是也有著舉足輕重的地位萄涯,下面我就結(jié)合這ES5中的一些常用的方法绪氛,與ES6中的一些方法做一些說明和實(shí)際用途。
一涝影、ES5中數(shù)組常用方法:
1枣察、循環(huán)遍歷。
let arr = [1,2,3]
for(let i=0;i<arr.length;i++){
console.log(i) // 1 2 3
}
2燃逻、forEach:沒有返回值序目,不能使用break和continue。只是針對每個(gè)元素調(diào)用Func唆樊。
let arr = [1,2,3]
// elem 數(shù)組里面的每一項(xiàng)
// index 數(shù)組索引
// array 數(shù)組
arr.forEach(function(elem,index,array){
console.log(elem,index) // 1 0 2 1 3 2
})
3宛琅、map:返回新數(shù)組,每個(gè)元素為調(diào)用Func后的結(jié)果逗旁。
let arr = [1,2,3]
let result = arr.map(function(val){
val += 1
return val
})
console.log(arr,result) // [1,2,3] [2,3,4]
4嘿辟、filter:返回符合Func條件的元素?cái)?shù)組。
let arr = [1,2,3]
let result = arr.filter(function(val){
return val == 2
})
console.log(arr,result) // [1,2,3] [2]
5片效、some:返回布爾值红伦,判斷是否有元素符合Func條件(有一個(gè)滿足條件就返回true)。
let arr = [1,2,3]
let result = arr.some(function(val){
return val == 2
})
console.log(arr,result) // [1,2,3] true
6淀衣、every:返回布爾值昙读,判斷每個(gè)元素符合Func條件(全部滿足條件才返回true)。
let arr = [1,2,3]
let result = arr.every(function(val){
return val == 2
})
console.log(arr,result) // [1,2,3] false
7膨桥、reduce:接收函數(shù)作為一個(gè)累加器
7-1:累加器
let arr = [1,2,3]
// prev為前一個(gè)對象
// cur為當(dāng)前對象
// index為當(dāng)前序列
// arr為當(dāng)前數(shù)組
let sum = arr.reduce(function(prev,cur,index,arr){
return prev + cur
},0)
console.log(sum) // 6
7-2蛮浑、獲取數(shù)組中最大值唠叛。
let arr = [1,2,3]
let max = arr.reduce(function(prev,cur){
Math.max(prev,cur)
})
console.log(max) // 3
7-3、數(shù)組去重
let arr = [1,2,3,3]
let res = arr.reduce(function(prev,cur){
prev.indexOf(cur) == -1 && prev.push(cur)
return prev
},[])
console.log(res) // [1,2,3]
8沮稚、for...in:遍歷數(shù)組的時(shí)候會(huì)將原型下面函數(shù)遍歷
Array.prototypr.foo = function(){
console.log("foo")
}
let arr = [1,2,3]
for(let index in arr){
console.log(index) // 遍歷數(shù)組同樣會(huì)遍歷原型下面的函數(shù)foo
}
二艺沼、ES6中數(shù)組常用方法
1、find:返回第一個(gè)通過測試的元素
let arr = [1,2,3,4]
let res = arr.find(function(val){
return val > 2
})
console.log(res) // 3
2蕴掏、findIndex:返回第一個(gè)通過測試的元素對應(yīng)索引
let arr = [1,2,3,4]
let res = arr.find(function(val){
return val > 2
})
console.log(res) // 2
3障般、for...of
let arr = [1,2,3,4]
for(let item of arr){
console.log(item) // 1 2 3 4
}
3-1、values:僅遍歷值
let arr = ["a","b","c","d"]
for(let item of arr.values()){
console.log(item) // "a" "b" "c" "d"
}
3-2盛杰、keys:僅遍歷index
let arr = ["a","b","c","d"]
for(let item of arr.keys()){
console.log(item) // 0 1 2 3
}
3-3挽荡、entries:遍歷index和值
let arr = ["a","b","c","d"]
for(let item of arr.entries){
console.log(item) // [0, "a"] [1, "b"] [2, "c"] [3, "d"]
}