Javascript新特性:数组的扩展
在ECMAScript5中,为Array对象引入了一些新方法,下面简单列出:
项的定位:indexOf()/lastIndexOf():
<script type="text/javascript"> var arr=[1,2,3,4,5,6,5,4,3,2,1]; console.log(arr.indexOf(2)); console.log(arr.lastIndexOf(2)); </script>
这两个方法均接受两个参数:要查找的项目以及可选的从何处开始查找的索引。
迭代方法:
every()--------在数组的每个元素上运行给定函数,如果给定函数对每个项都返回true,则返回true
filter()---------在数组的每个元素上运行给定函数,并返回包含令给定函数返回true的那些元素
forEach()-----在数组的每个元素上运行给定函数,该方法没有返回值。
map()---------在数组的每个元素上运行给定函数并返回每次给定函数的返回值组成的数组
some()--------在数组的每个元素上运行给定函数,如果给定函数在任意一个元素上返回true,则返回true.
这些方法都接受两个参数:一个在各个项目上运行的函数和一个可选的在哪里运行函数的作用域对象。该函数接受三个参数:数组项目、数组项目在数组中的位置和数组对象自身。
<script type="text/javascript"> var arr=[1,2,3,4,5,6,5,4,3,2,1]; var result1=arr.every(function(item,index,array){return item>2}); var result2=arr.filter(function(item,index,array){return item>2}); var result3=arr.map(function(item,index,array){return item>2}); var result4=arr.some(function(item,index,array){return item>2}); arr.forEach(function(item,index,array){console.log(item+=2);}); console.log(result1); console.log(result2); console.log(result3); console.log(result4); console.log(arr); </script>
在这些方法中,最相似的两个就是every()和some()了,他们都查询手足是否匹配某个条件。对于every(),传入的函数必须对每个参数都返回true,方法才能都返回true,否则,它返回false。相反,some()只要有哪怕一个元素让传入的参数返回true,则返回true.
forEach()没有返回值,基本上等同于for循环迭代一个数组。