Javascript 通过Json对象进行查询

Javascript 通过Json对象进行查询,javascript,Javascript,这是我的JSON: [{"Id":1,"Order":1,"IsDone":true,"Text":"abc","Date":"6/14/2014"}, {"Id":2,"Order":2,"IsDone":false,"Text":"cde","Date":"6/15/2014"}, {"Id":3,"Order":3,"IsDone":false,"Text":"fgh","Date":"6/16/2014"}] 获取IsDone==true计数的最有效方法是什么?如果您试图通过id或

这是我的JSON:

[{"Id":1,"Order":1,"IsDone":true,"Text":"abc","Date":"6/14/2014"},
 {"Id":2,"Order":2,"IsDone":false,"Text":"cde","Date":"6/15/2014"},
 {"Id":3,"Order":3,"IsDone":false,"Text":"fgh","Date":"6/16/2014"}]

获取IsDone==true计数的最有效方法是什么?

如果您试图通过id或名称从示例结构中访问某个项,而不知道该项在数组中的位置,最简单的方法是使用下划线.js库:

    var data =   [{"Id":1,"Order":1,"IsDone":true,"Text":"abc","Date":"6/14/2014"},{"Id":2,"Order":2,"IsDone":false,"Text":"cde","Date":"6/15/2014"},{"Id":3,"Order":3,"IsDone":false,"Text":"fgh","Date":"6/16/2014"}];

    var allDesiredElements = _.filter(data, function(item) {
      return item.IsDone === true;
    });

//for length use
console.log(allDesiredElements.length);

如果您试图通过id或名称从示例结构中访问某个项,而不知道该项在数组中的位置,最简单的方法是使用underline.js库:

    var data =   [{"Id":1,"Order":1,"IsDone":true,"Text":"abc","Date":"6/14/2014"},{"Id":2,"Order":2,"IsDone":false,"Text":"cde","Date":"6/15/2014"},{"Id":3,"Order":3,"IsDone":false,"Text":"fgh","Date":"6/16/2014"}];

    var allDesiredElements = _.filter(data, function(item) {
      return item.IsDone === true;
    });

//for length use
console.log(allDesiredElements.length);

您可以使用普通javascript迭代:

var a=[{"Id":1,"Order":1,"IsDone":true,"Text":"abc","Date":"6/14/2014"},{"Id":2,"Order":2,"IsDone":false,"Text":"cde","Date":"6/15/2014"},{"Id":3,"Order":3,"IsDone":false,"Text":"fgh","Date":"6/16/2014"}]

var ct=0;
a.forEach(function(entry) {
    if(entry.IsDone)ct++;
});
alert(ct);

您可以使用普通javascript迭代:

var a=[{"Id":1,"Order":1,"IsDone":true,"Text":"abc","Date":"6/14/2014"},{"Id":2,"Order":2,"IsDone":false,"Text":"cde","Date":"6/15/2014"},{"Id":3,"Order":3,"IsDone":false,"Text":"fgh","Date":"6/16/2014"}]

var ct=0;
a.forEach(function(entry) {
    if(entry.IsDone)ct++;
});
alert(ct);

试试这个

 var obj = [{"Id":1,"Order":1,"IsDone":true,"Text":"abc","Date":"6/14/2014"},
    {"Id":2,"Order":2,"IsDone":false,"Text":"cde","Date":"6/15/2014"},
    {"Id":3,"Order":3,"IsDone":false,"Text":"fgh","Date":"6/16/2014"}]

    var count = 0;
    for(i=0;i<obj.length;i--){
      count += (obj[i].IsDone) ? 1 : 0;
    }
var obj=[{“Id”:1,“Order”:1,“IsDone”:true,“Text”:“abc”,“Date”:“6/14/2014”},
{“Id”:2,“Order”:2,“IsDone”:false,“Text”:“cde”,“Date”:“6/15/2014”},
{“Id”:3,“Order”:3,“IsDone”:false,“Text”:“fgh”,“Date”:“6/16/2014”}]
var计数=0;
对于(i=0;i试试这个

 var obj = [{"Id":1,"Order":1,"IsDone":true,"Text":"abc","Date":"6/14/2014"},
    {"Id":2,"Order":2,"IsDone":false,"Text":"cde","Date":"6/15/2014"},
    {"Id":3,"Order":3,"IsDone":false,"Text":"fgh","Date":"6/16/2014"}]

    var count = 0;
    for(i=0;i<obj.length;i--){
      count += (obj[i].IsDone) ? 1 : 0;
    }
var obj=[{“Id”:1,“Order”:1,“IsDone”:true,“Text”:“abc”,“Date”:“6/14/2014”},
{“Id”:2,“Order”:2,“IsDone”:false,“Text”:“cde”,“Date”:“6/15/2014”},
{“Id”:3,“Order”:3,“IsDone”:false,“Text”:“fgh”,“Date”:“6/16/2014”}]
var计数=0;
对于(i=0;i使用grep fron jquery

var selectedArray = [{"Id":1,"Order":1,"IsDone":true,"Text":"abc","Date":"6/14/2014"},
{"Id":2,"Order":2,"IsDone":false,"Text":"cde","Date":"6/15/2014"},
{"Id":3,"Order":3,"IsDone":false,"Text":"fgh","Date":"6/16/2014"}]



selectedArray = jQuery.grep(selectedArray, function (el) { return el.IsDone == true;   });

 alert(selectedArray.length);
其中seletedArray是您的实际阵列

使用grep fron jquery

var selectedArray = [{"Id":1,"Order":1,"IsDone":true,"Text":"abc","Date":"6/14/2014"},
{"Id":2,"Order":2,"IsDone":false,"Text":"cde","Date":"6/15/2014"},
{"Id":3,"Order":3,"IsDone":false,"Text":"fgh","Date":"6/16/2014"}]



selectedArray = jQuery.grep(selectedArray, function (el) { return el.IsDone == true;   });

 alert(selectedArray.length);
其中seletedArray是您的实际阵列


您的代码看起来不像JSON对象,而是一个对象数组。另外,这是JavaScript中非常基本的任务,您尝试过什么?最有效的方法是使用for循环。下面的解释是=>LINQ.js也可以工作,从我看到的情况来看,fastI确实使用了循环方法。但我想知道是否还有其他方法可以实现这一点谢谢。顺便说一句,“最有效”以什么方式?我怀疑任何发布的答案都会比常规的
for
循环快。除非对数据进行排序,否则您需要循环数组中的所有元素。您的代码看起来不像JSON对象,而是一个对象数组。此外,这是JavaScript中非常基本的任务,您尝试过什么?最有效的方法是使用for循环。这里的解释=>LINQ.js也会起作用,从我所看到的情况来看,fastI确实使用了循环方法。但我只是想知道是否有其他方法来解决这个问题。顺便说一下,谢谢。“最有效”以什么方式?我怀疑任何发布的答案都会比常规的
for
循环快。除非对数据进行排序,否则您需要循环数组中的所有元素。
.find
只找到第一个,而不是全部。我想您实际上想要
.filter
.find
只找到第一个,而不是全部我想你真的想要
。.filter