filter:過濾,不操做原數組,返回過濾後的數組,返回true ,這一項就放到新數組es6
通常用於刪除面試
let newAry=[3,5,2,8,9,4,0].filter(function (item){ return item>2 && item<5 }) console.log(newAry);//[三、4]
forEach :循環,沒有 return 返回值編程
let arr = [2,4,5,7,1]; arr.forEach(function (item){//聲明式,不關心如何實現 console.log(itme); })
for(let i=0; i<arr.length;i++){//編程式
console.log(arr[i]);
}
for(let key in arr){//key會變成字符串類型
}
for(let val of arr){}//支持return,而且是值of數組,不能遍歷對象
面試題:forEach、for、for in,for of的區別
for in 能打印數組的私有屬性
for of 支持return,不能遍歷對象
includes (ES6):查看數組是否包含,返回boolean類型數組
let arrf = [2,5,7,9]; arrf.includes(5);
find(ES6):找到具體的那一項,不改變原數組,返回true 表示找到了,找到就結束循環,找不到返回undefined函數
//需求:找到用戶名
let resule = arr3.find(function(itme,index){ return itme == 'xxx' })
console.log(resule);//xxx
keys:方法返回一個包含數組中每一個索引鍵的Array Iterator
對象。spa
var array1 = ['a', 'b', 'c']; var iterator = array1.keys(); for (let key of iterator) { console.log(key); // expected output: 0 1 2 }
map:映射 ,將原有的數組映射成一個新數組,不操做原數組,返回新數組,回調函數中返回什麼這一項就是什麼code
通常用於更新,修改對象
//需求[1,2,3]變成 <li>1</li><li>2</li><li>3</li>
let arr1 = [1,2,3].map(function (item){
return `<li>${itme}<li>`//es6中的模板字符串,遇到變量使用${}取值
})
console.log(arr1.join(''));
reduce :收斂,4個參數,返回疊加後的結果,原數組不變,回調函數返回blog
let some=[1,3,4,5].reduce(function (prev,next,index,item){//第一項,第二項,索引,原數組
console.log(prev,next);
return prev+next
})
console.log(some);索引
//計算多維數組
let some2=[{pirce:30,count:2},{pirce:50,count:2},{pirce:40,count:2}];
let some3=some2.reduce(function (prve,next){
return prve+next.pirce*next.count;
},0)//0是默認指定第一次的prve
console.log(some3);//240
//多維數組變成一維數組
let some4 = [[1,2,3],[4,5,6],[7,8,9]];
let some5 = some4.reduce(function (prve,next){
return prve.concat(next);
})
console.log(some5);//[1,2,3,4,5,6,7,8,9]
some :找到返回turn,找到true後中止,找不到返回false
every:找到false後中止,找到返回false