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代替。
