2018-6-3_《JS遍历方法(12个)》

/*
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()

//forEach()
// 按升序对数组中每一项(有效值)进行一次回调
//!!!!!返回 undefined值,即使你return了一个值,即返回无效

let arr = [1,3,5];
arr.forEach((v,i,a) => {
if(!v) return; console.log( v*v); //1,9,25 });

  

二. every

//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

  

五. map

//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

  

六. reduce

//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大同)

八. find

//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;注意:是第一个元素!!!!!!

  

九. findIndex

//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()

//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"
}

  

原文地址:https://www.cnblogs.com/beesky520/p/9129564.html