2016-03-14 77 views
-3

我有此數組:角結合過濾計數

[ 
    { 
     type: "hhh", 
     items: [ 
     { 
      "name": "EGFR", 
      "type": "a", 
      "selected": true 
     } 
     ] 
    }, 
    { 
     type: "aaa", 
     items: [ 
     { 
      "name": "mm", 
      "type": "b", 
      "selected": false 
     } 
     ] 
    }, 
    { 
     type: "ii", 
     items: [ 
     { 
      "name": "pp", 
      "type": "bb", 
      "selected": true 
     } 
     ] 
    } 
    ] 

我想表明與選定的屬性「真」的項目的計數器。 我希望在更改時實時更改它。 (不含手錶和功能)

Thnaks!

+0

工作是怎樣的陣列會改變?通過任何後端調用/ Ajaz/API等? –

回答

0

這裏是這樣的:

var current_selected = { 
get amount(){ 
    var res = 0; 
    arr.forEach(function(item, i, arr) { 
     if (item.items[0].selected) res++; 
     }) 
     return res; 
    } 
} 

呼喚:

current_selected.amount 

Fiddle

0

您可以使用JsonPath得到計數。另外使用JsonPath還有一個額外的優勢,就是處理複雜的json結構。因爲你給的例子,你只需要包括jsonpath js文件並使用腳本如下:

console.log(arr); 
var filtered = jsonPath(arr, "$.[*].items[?(@.selected==true)]"); 
console.log(filtered); 
console.log(filtered.length); 

其中ARR是你的JSON結構。

JsonPath可以從得到: https://code.google.com/archive/p/jsonpath/downloads

JsonPath幫助: http://goessner.net/articles/JsonPath/

可能有更新的版本中其他來源,但,這是一個我曾經在