在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迴圈迭代一個數組。