????????前面寫過一篇文章是關于js遍歷數(shù)據(jù)的卖局,這段時間看一篇關于JavaScript中的迭代方法感覺不錯也挺實用的匪傍,給大家推薦一下茅坛。
????????ECMAScript5為數(shù)組定義了5個迭代方法。每個方法都接收兩個參數(shù):要在每一項上運行的函數(shù)和(可選的)運行該函數(shù)的作用域對象(即影響this的值)琳袄。傳入這些方法中的函數(shù)會接收三個參數(shù):數(shù)組項的值、該項在數(shù)組中的位置和數(shù)組對象本身纺酸。根據(jù)使用方法的不同窖逗,這個函數(shù)執(zhí)行后的返回值可能會也可能不會影響方法的返回值。這5個迭代方法是:
- every():對數(shù)組中的每一項運行給定的函數(shù)餐蔬。如果該函數(shù)對每一項都返回true碎紊,則返回true。
- filter():對數(shù)組中的每一項運行給定的函數(shù)樊诺,返回該函數(shù)會返回true的項組成的數(shù)組仗考。
- forEach():對數(shù)組中的每一項運行給定的函數(shù)。該方法沒有返回值词爬。
- map():對數(shù)組中的每一項運行給定的函數(shù)秃嗜,返回每次函數(shù)調用的結果組成的數(shù)組。
- some():對數(shù)組中的每一項運行給定的函數(shù)顿膨,如果該函數(shù)對任一項返回true锅锨,則返回true。
????????以上所有的方法都不會修改數(shù)組中包含的值恋沃。
一必搞、 every()方法與some()方法
????????every()和some()非常相似,它們都用于查詢數(shù)組中的項是否滿足某個條件囊咏。對于every()方法來說顾画,傳入的函數(shù)必須對每一項都返回true,這個方法才返回true匆笤。否則研侣,它就返回false。而some()方法則是只要傳入的函數(shù)對數(shù)組的某一項返回true炮捧,就會返回true庶诡。例如:
var nums = [1,2,3,4,5,4,3,2,1];
var result = nums.every(function(item, index, array){
return (item > 2);
})
console.info(result);
????????上面的代碼會在控制臺中打印false。
var nums = [1,2,3,4,5,4,3,2,1];
var result = nums.some(function(item, index, array){
return (item > 2);
})
console.info(result);
????????上面的代碼會在控制臺中打印true咆课。
二末誓、 filter()函數(shù)
????????filter()函數(shù)利用指定的函數(shù)確定是否存在返回的數(shù)組中包含某一項。例如书蚪,要返回一個所有數(shù)值都大于2的數(shù)組喇澡,可以使用下面的代碼:
var nums = [1,2,3,4,5,4,3,2,1];
var result = nums.filter(function(item, index, array){
return (item > 2);
})
console.info(result); // [3,4,5,4,3]
????????上面的代碼通過調用filter()方法返回包含3,4,5,4,3的數(shù)組。這個方法對于查詢符合某些條件的所有數(shù)組非常有用殊校。
三晴玖、 map()方法
????????map()方法也返回一個數(shù)組,而這個數(shù)組的每一項都是在原始數(shù)組中的對應項上運行傳入函數(shù)的結果。例如呕屎,可以給數(shù)組中的每一項都乘以2让簿,然后返回這些乘積組成的數(shù)組:
var nums = [1,2,3,4,5,4,3,2,1];
var result = nums.map(function(item, index, array){
return item * 2;
})
console.info(result); // [2,4,6,8,10,8,6,4,2]
????????map()方法適合用于創(chuàng)建包含的項于另一個數(shù)組一一對應的數(shù)組。
四秀睛、 forEach()方法
????????forEach()方法只是對數(shù)組中的每一項運行傳入的函數(shù)尔当。這個方法沒有返回值,本質上于使用for循環(huán)迭代數(shù)組是一樣的蹂安⊥钟看下面的例子:
var nums = [1,2,3,4,5,4,3,2,1];
nums.forEach(function(item, index, array){
//執(zhí)行需要的操作
})
????????js中的這些數(shù)組方法通過執(zhí)行不同的操作,可以大大的方便處理數(shù)組的任務田盈。
??支持這些迭代方法的瀏覽器有:IE9+畜号,F(xiàn)irefox2+,Safari3+缠黍,Opera9.5+和Chrome弄兜。
------------------------------------------------------------------------------------------------------------------------------------轉自jQuery之家