2014-03-25 16 views
3

我想計數的匹配某些條件的JSON元素的數組項的數目。 我的數組是這樣的:數以JSON項目與條件

array = [{ 
      name: 'Bob', 
      age: 24 
      }, 
      ...., 
      { 
      name: 'Mary', 
      age: 23 
      }] 

,而不是通過整個數組我試圖得到儘可能簡單的優雅爲我的數據庫請求的表達式循環:

db.myCollection.find({ age: 23 }).count() 

是否有任何的最佳做法?我正在考慮使用下劃線庫,但我找不到我在找什麼。

非常感謝您的幫助。

+0

你可以更清楚你是什麼樣的條件ta喜歡?它僅僅是JSON對象中某些鍵的存在,還是某些鍵的實際條件等於某些值? – aug

+0

是不是Array.prototype.filter()一個選項? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter – jarandaf

+0

如果您使用下劃線有'_.size(..)' – megawac

回答

10

好了,你可以做到這一點,沒有任何第三方庫,也沒有循環:

array.filter(function(value) { return value.age === 23 }).length; 

而且與ES6它甚至變得更簡潔

array.filter(value => value.age === 23).length; 
1

正如我在運提到的,好像你正在尋找_.size

_.chain(json) 
.find({age: 23}) 
.size() 
.value();