JS-11 (数组函数)

(1)判断:

①判断数组中是否所有元素都符合要求

var bool=arr.every(
    function(elem,i,arr){
        return 判断条件
    }
)

返回值为true或false

原理:

1). every内部自带for循环遍历数组中每个元素

2). 每遍历一个元素就自动调用一次回调函数

3). 每次调用回调函数时:

  i. 形参elem会自动获得当前正在遍历的元素值

  ii. 形参i, 会自动获得当前正在遍历到的下标位置

  iii. 形参arr,会自动获得当前调用every().前的数组对象arr

  

②判断数组中是否包含符合要求的元素

var bool=arr.some(function(elem,i,arr){
	return 判断条件
})

 每次循环调用一次回调函数,如果当前元素满足条件,则数组后续的元素不再遍历

(2)遍历:

① forEach

arr.forEach(//自带了for循环,遍历数组中每个元素
  function(elem,i,arr){ //每遍历一个元素就自动调用一次回调函数
    //elem收到当前正在遍历的元素值
    //i收到当前正在遍历到的下标位置
    //arr收到调用forEach()的.前的数组
    //对当前数组中正在遍历的当前元素执行任何操作!
  }
)
var arr=[1,2,3];
arr.forEach(function(elem,i,arr1){
  arr1[i]+=1;
});
console.log(arr); //[2,3,4]

②map:遍历出原数组中每个元素值,修改后,放入新数组中返回

var arr=[1,2,3]
console.log(arr); var newArr=arr.map((elem,i,arr)=>{ return elem*elem; }); console.log(newArr); //arr[1,4,9]

 ③for of

for(var 变量 of 数组/类数组对象/字符串){
	of会依次取出数组中每个元素的值,保存到of前的变量中
}

 for of 不能获取位置,不能倒序遍历

*for of | for in | forEach

  1) 所有数字下标的索引数组、类数组对象、字符串都能用for of 遍历;只有索引数组才能用forEach;

  2) 所有自定义下标名称的关联数组、对象、都用for in 遍历,for in获取的不是元素值,而仅仅是下标名称

(3)过滤 filter

复制出数组中符合条件的元素放入一个新数组返回原数组保持不变

var arr=[1,2,3,4,5,6];
var odd=arr.filter((elem,i,arr)=>{
    return elem%2!==0;
});
console.log(odd);  //[1,3,5]

 (4)汇总reduce

对数组中的元素进行统计最终得出一个结果

var sum=arr.reduce(
	//1. Reduce先定义变量保存起始值
	//2. Reduce自带for循环,遍历数组中每个元素
	//3. 每遍历一个元素,也自动调用一次回调函数
	function(prev, elem, i, arr){
		//prev是previous的缩写,表示当前元素之前的临时汇总值
		return prev+elem;
	},
	起始值
)
原文地址:https://www.cnblogs.com/codexlx/p/12485941.html