ECMA Script 5 中新增兩個不錯的關於數組元素的邏輯運算方法some, every
Array.some(function(item){});
Array.every(function(item){});
every方法表示當數組每個元素在判定函數中都返回true,則最終結果為true,相當於邏輯運算符 &&,
some則當其中一個返回true,則最終結果為true, 相當於邏輯運算符||。
以下來舉例說明:
var items = [1, 2, 3, 4, 5]; var res = items.every(function(item){ return item > 3; }); console.log(res); // false items = ['a', 2, 3, 4, 5]; res = items.every(function(item){ return !isNaN(item); // 檢查是否是數值 }); // 檢查是不是每個元素都是數字 console.log(res); // false items = ['a', 2, 3, 4, 5]; res = items.some(function(item){ return !isNaN(item); // 檢查是否是數值 }); console.log(res); // true
當然邏輯或,邏輯與運算可能會遇到數組為空的情況,所以按照數學上的慣例,數組為空時,some直接返回false, every直接返回true,
所以當設計到特點業務時,需要注意到這點,最好還是添加限定條件,確保數組不為空,使代碼意圖更加明了可讀。
同時,從規范中還了解到,跟邏輯與相似,當其中一個判定返回false時,整個計算就直接停止,返回最終結果false從而提高效率。所以請不要在判定函數里添加其他業務邏輯或者執行代碼,如有需求,請使用map代替。