/* 12個遍歷方法: 1. forEach ES5 2. every ES5 3. some ES5 4. filter ES5 5. map ES5 6. reduce ES5 7. reduceRight ES5 與reducer大同 8. find ES6 根據條件找到數組成員。返回第一個數組成員,若是沒有,返回'undefined' 9. findIndex ES6 根據條件找到數組成員。返回第一個數組成員的下標,若是沒有,返回'undefined'
10. keys ES6 11. values ES6 12. entries ES6 */
一. forEach()javascript
//forEach() // 按升序對數組中每一項(有效值)進行一次回調 //!!!!!返回 undefined值,即便你return了一個值,即返回無效 let arr = [1,3,5]; arr.forEach((v,i,a) => {
if(!v) return; console.log( v*v); //1,9,25 });
二. everyjava
//every()———檢測數組中全部元素是否附和規則判斷 //參數和forEach同樣, v,i,a, return有效 let arr_1 = [1,3,5,7,9]; let arr_2 = [2,4,6,8]; let isOdd = (v) => {return v%2 === 0}; let ret_1 = arr_1.every(isOdd); let ret_2 = arr_2.every(isOdd); console.log(ret_1); //false console.log(ret_2); //true
三. some數組
//some()——數組中是否有知足判斷條件的元素 // 邏輯等同於: || let arr_1 = [1,3,5,7,9,88]; let arr_2 = [3,7,9]; //函數 let isOdd = (v) => {return v%2 === 0}; let ret_1 = arr_1.some(isOdd); // 是否存在一個(或多個)偶數 ture (88) let ret_2 = arr_2.some(isOdd); // 是否存在一個(或多個)偶數 false console.log(ret_1); console.log(ret_2);
四. filter函數
//filter(); 過濾數組元素, 返回新數組
// 參數: v,i,a; return有效;
// 注意: 是過濾
let arr = [1,3,5,7];
let ret = arr.filter(v => {
return v >3; //返回大於3的數
});
console.log(ret); //[5,7]
console.log(ret instanceof Array); //true
五. mapspa
//map()——對數組中的每一個元素都處理,返回新數組 // 參數:v, i, a ,return有效 let arr = [1,2,4,8]; let arr_2 = [1,2,4,NaN,8]; let arr_3 = [1,2,4,null,8]; let arr_4 = [1,2,4,undefined,8]; let ret = arr.map(v => v*v); let ret_2 = arr_2.map(v => v*v); let ret_3 = arr_3.map(v => v*v); let ret_4 = arr_4.map(v => v*v); console.log(ret); //[1,4,16,64] console.log(ret_2); //[1,4,16,NaN,64] console.log(ret_3); //[1,4,16,0,64] console.log(ret_4); //[1,4,16,NaN,64] 即:數組中有「NaN」和「undefined」是都NaN; //null爲0
六. reduceblog
//reduce()—— 爲數組提供累加器,合併一個值 //語法:arr.reduce(function(total, currentValue, currentIndex, arr), 初始值) let arr = [1,2,3,4,5,6,7,8,9]; let ret = arr.reduce((tV, cV) => { return tV + cV; },0); let ret_2 = arr.reduce((tV, cV) => { return tV + cV; },10000); console.log(ret); //45 console.log(ret_2); //10045
七. reducerRight (用法與reducer大同)ip
八. findio
//find() ——找到附和條件的數組成員,並返回該成員;找不到,返回'undefined' let arr = ['蘋果',3,4,'good']; let ret = arr.find(v => { return v === '蘋果'; }); console.log(ret); //蘋果
let arr = [61,-7.5,0,3,9,-0.5,88]; let ret = arr.find(v =>{ return v < 0; }); console.log(ret); // -7.5;注意:是第一個元素!!!!!!
九. findIndexconsole
//findIndex();—— 返回第一個附和條件的數組位置, 若不符合,返回-1; let arr = [1,3,5,7,8,9]; let arr_2 = [1,3,5,7,9]; let ret = arr.findIndex(v => { return v%2 === 0; }); let ret_2 = arr_2.findIndex(v => { return v%2 === 0; }); console.log(ret); //4 console.log(ret_2); //-1;即沒有
十. Array.keys()、Array.values()、Array.enties()function
//Array.keys()、Array.values()、Array.enties() //都是返回: Array Iterator let arr = ['foo','bar','neek']; for(let i of arr.keys()){ console.log(i); //0,1,2 } for(let v of arr.values()){ console.log(v); //foo,bar,neek } //注意:是[],不是() !!!! for(let [i,v] of arr.entries()){ console.log(i,v); // 0 "foo", 1 "bar", 2 "neek" }