【学习总结】对javascript中数组迭代方法的理解。
2017-01-26 00:21
555 查看
ECMAscript为Array类型定义了5个迭代方法。分别是every() /filter()/forEach()/map()/some()
每个方法都接受两个形参:数组每项都要执行的function,运行该函数的作用域对象()(可忽略);数组每项都要执行的function,必须有三个参数,数组项的值,该数组项在数组中的索引,数组对象本身。习惯上我们用(item,index,array)表示。
every():对数组的每一项都执行定义的函数,每一项都返回true,则该函数返回值为true。类似&&。
这块代码,数组的每一项都满足if条件,但每一项的返回值并不一定是true,每一项的返回值由return决定,而return 时存在隐形类型转化,这里的是由于数组中有一个item为0,return后自动转化为false.
every()函数存在短路现象,即在遍历对象数组时,只要出现返回值为false,则立马结束遍历,返回结果false。不一定会遍历对象数组的所有项。
filter():对数组每一项都执行定义的函数,返回该函数会返回true的项组成的数组。
返回值由return 后的语句决定。如arr1[1]执行函数后,函数的返回值为false。
返回的数组一定是对象数组的子集或者相等或为 [] (空数组)。
forEach():对数组的每一项执行定义的函数,该方法没有返回值。
虽然forEach()函数没有返回值,但一定会遍历对象数组每一项。比for遍历好用。
map():对数组的每一项执行定义的函数,返回每次函数调用结果组成的数组。
与filter()很类似,会遍历数组的每一项,返回数组中的值由return 后的语句决定。
some():对数组的每一项都会执行定义的函数,如果该函数对任一项返回true,则返回true。类似||。
存在短路现象。即在遍历对象数组时,只要出现返回值为ture,则立马结束遍历,返回结果true。不一定会遍历对象数组的所有项。
每个方法都接受两个形参:数组每项都要执行的function,运行该函数的作用域对象()(可忽略);数组每项都要执行的function,必须有三个参数,数组项的值,该数组项在数组中的索引,数组对象本身。习惯上我们用(item,index,array)表示。
every():对数组的每一项都执行定义的函数,每一项都返回true,则该函数返回值为true。类似&&。
<script> var arr1=[1,0,5,9,3]; var result=arr1.every(function(item,index,array){ if(item<=10) return item; }) console.log(result);//false </script>
这块代码,数组的每一项都满足if条件,但每一项的返回值并不一定是true,每一项的返回值由return决定,而return 时存在隐形类型转化,这里的是由于数组中有一个item为0,return后自动转化为false.
<script> var arr1=[1,-1,5,9,3]; var text=new Array(); var result=arr1.every(function(item,index,array){ if(item<=10) return text[text.length]=item+1; }) console.log(result);//false console.log(text);//[2, 0] </script>
every()函数存在短路现象,即在遍历对象数组时,只要出现返回值为false,则立马结束遍历,返回结果false。不一定会遍历对象数组的所有项。
filter():对数组每一项都执行定义的函数,返回该函数会返回true的项组成的数组。
var arr1=[1,-1,5,9,3]; var result=arr1.filter(function(item,index,array){ if(item<10){ return item+1; } }) console.log(result);//[1,5,9,3]
返回值由return 后的语句决定。如arr1[1]执行函数后,函数的返回值为false。
返回的数组一定是对象数组的子集或者相等或为 [] (空数组)。
forEach():对数组的每一项执行定义的函数,该方法没有返回值。
var arr1=[1,-1,5,9,3]; var sum=0; arr1.forEach(function(item,index,array){ sum+=item; }) console.log(sum);//17
虽然forEach()函数没有返回值,但一定会遍历对象数组每一项。比for遍历好用。
map():对数组的每一项执行定义的函数,返回每次函数调用结果组成的数组。
var arr1=[1,-1,5,9,3]; var sum=0; var result=arr1.map(function(item,index,array){ if(item<10){ return item+1; } }) console.log(result);
与filter()很类似,会遍历数组的每一项,返回数组中的值由return 后的语句决定。
some():对数组的每一项都会执行定义的函数,如果该函数对任一项返回true,则返回true。类似||。
var arr1=[1,-1]; var text=new Array(); var result=arr1.some(function(item,index,array){ if(item<10){ text[text.length]=item+1; return item; } }) console.log(result);//true console.log(text);//[2]
存在短路现象。即在遍历对象数组时,只要出现返回值为ture,则立马结束遍历,返回结果true。不一定会遍历对象数组的所有项。
相关文章推荐
- JavaScript之数组五大迭代方法总结
- javascript Array数组常用方法学习与总结
- javascript 学习笔记 【数组迭代方法】
- javascript数组的常用方法总结
- javascript 数组的常用方法总结
- javascript数组去重方法终极总结
- javascript 数组对象中的迭代方法
- JavaScript 学习-9-数组对象的方法
- 敏捷开发学习总结(1):传统序列式软件开发方法的缺点,以及迭代开发方法的选择
- javascript中数组array及string的方法总结
- javascript数组18中方法总结
- javascript中Array数组的迭代方法实例分析
- javascript 数组对象中的迭代方法
- javascript中数组常用方法总结
- Javascript 数组使用方法总结(转载)
- 关于javascript数组的定义与其一些常用方法总结
- javascript 学习之数组-数组方法
- 方法返回javascript学习实录 之二(数组操作等等utils) --刘啸尘
- 信息>后缀数组学习笔记--后缀数组解题方法总结
- javascript 数组对象中的迭代方法