关于数组遍历五种方法学习(修改1)
1、forEach(callback,thisObj)参数的认识:
var array=[1,2,3,4,5,6]; var obj={name:"zhang",age:18}; array.forEach(function(ivalue,index,arr){ console.log("arr["+index+"]="+arr[index]+"-------"+"ivalue="+ivalue+"-------"+"arr=["+arr+"]"+this.name); },obj);
forEach有俩个参数:第一个参数-- callback函数 有俩个3参数(当前遍历值:ivalue,当前索引值:index,当前数组对象);第二个参数--是可选参数。用来当作callback
函数内this的
值的对象;
上面解释信息 可能有点乱 纯是为本人理解做的例子
2、every(callback,thisObj)参数认识:
var array1=[2,6,6,4,10,6] var obj1={name:"zhang",age:18}; var con=array1.every(function(value,index,arr){ if(value%2==0){ return true; } },obj1); console.log(con);
every(callback,thisObj)方法是检查数组所有元素是否通过指定函数的测试(callback),callback参数与forEach相同,every
方法为数组中的每个元素执行一次 callback
函数,直到它找到一个使 callback
返回 falsy(表示可转换为布尔值 false 的值)的元素。如果发现了一个这样的元素,every
方法将会立即返回 false
。否则,callback
为每一个元素返回 true
,every
就会返回 true
。callback
只会为那些已经被赋值的索引调用。不会为那些被删除或从来没被赋值的索引调用。本段解释出处;
3、some(callback,thisObj)参数认识:
var array=[1,2,3,4,5]; var obj={name:"zhang",age:18}; var show=array.some(function(value,index,arr){ if(value%2!=0){ console.log(value); return false; } },obj); console.log(show);
some中callback函数参数与every,forEach相同,callback函数用来遍历数组的每一个元素,回调的返回值有意义,返回true时,数组停止循环。此处与every相反,
输出结果:
由此可知 some返回值 不仅仅可以返回Boolean值;
4、map(callback,thisObj)参数认识:
var array=[1,2,3,4,5]; var obj={name:"zhnag",age:18}; var nArray=array.map(function(value,index,arr){ var sum=new Array(); sum.push(value*value); return sum; },obj); var nArray1=array.map(function(value,index,arr){ return value*value; },obj); console.log(nArray); console.log(nArray1); console.log(array);
输出结果如下:
对map的理解:map
方法会给原数组中的每个元素都按顺序调用一次 callback
函数。callback
每次执行后的返回值组合起来形成一个新数组。 callback
函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 delete
删除的索引则不会被调用。从上面红色部分 可以知道 上面第1行输出结果和2、3行输出结果不同的原因;
5、filter(callback,thisObj)参数认识:
//filter var array=[1,2,3,4,5,6]; var obj={name:"zhang",age:18}; var nArray=array.filter(function(value,index,arr){ if(value%2==0){ //return arr[index]; //添加这句话是多余的 return true; //复合条件的项 同样会被返回 } },obj); console.log(nArray);
输出结果:
对于filter方法了解:此函数用来遍历数组的每一个元素,不会改变原数组,fn回调必须返回Boolean类型,表示当前元素是否满足条件可以被返回。由红字部分 可以看代码中 return arr[index]是多余的;但是必须要有返回值;