我有这个数组:
[
{
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
}
]
}
]
我想显示具有所选属性“true”的项目的计数器。 我想让它在变化时实时更改。 (没有手表和功能)
Thnaks!
答案 0 :(得分: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
答案 1 :(得分: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/
在其他来源中可能有更新版本,但那是我曾经使用过的