ECMA Script 5 中新增兩個不錯的關於數組元素的邏輯運算方法some, everyjavascript
Array.some(function(item){}); java
Array.every(function(item){});數組
every方法表示當數組每一個元素在斷定函數中都返回true,則最終結果爲true,至關於邏輯運算符 &&,函數
some則當其中一個返回true,則最終結果爲true, 至關於邏輯運算符||。設計
如下來舉例說明:blog
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,ip
因此當設計到特色業務時,須要注意到這點,最好仍是添加限定條件,確保數組不爲空,使代碼意圖更加明瞭可讀。數學
同時,從規範中還了解到,跟邏輯與類似,當其中一個斷定返回false時,整個計算就直接中止,返回最終結果false從而提升效率。因此請不要在斷定函數裏添加其餘業務邏輯或者執行代碼,若有需求,請使用map代替。it