Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery.grep()引用JSON对象进行筛选_Javascript_Jquery_Json_Object_Grep - Fatal编程技术网

Javascript 使用jQuery.grep()引用JSON对象进行筛选

Javascript 使用jQuery.grep()引用JSON对象进行筛选,javascript,jquery,json,object,grep,Javascript,Jquery,Json,Object,Grep,感谢,其中接受的答案包括一个JS提琴,我能够验证我可以使用。但是,我无法使用服务器的输出复制效果。我怀疑我在对象引用中忽略了一些明显的东西,但作为JavaScript新手,我想我需要有人为我指出这一点 这是我的数据输出,一个对象数组: [{"id":"3","src":"url1","category":"A"}, {"id":"32","src":"url2","category":"D"}, {"id":"38","src":"url3","category":"E"}, {"id":"39

感谢,其中接受的答案包括一个JS提琴,我能够验证我可以使用。但是,我无法使用服务器的输出复制效果。我怀疑我在对象引用中忽略了一些明显的东西,但作为JavaScript新手,我想我需要有人为我指出这一点

这是我的数据输出,一个对象数组:

[{"id":"3","src":"url1","category":"A"},
{"id":"32","src":"url2","category":"D"},
{"id":"38","src":"url3","category":"E"},
{"id":"39","src":"url4","category":"E"},
{"id":"42","src":"url5","category":"F"},
{"id":"49","src":"url6","category":"B"},
{"id":"44","src":"url7","category":"F"}]
我使用以下代码筛选类别F中的条目:

var obj=[{“id”:“3”,“src”:“url1”,“category”:“A”},
{“id”:“32”,“src”:“url2”,“category”:“D”},
{“id”:“38”,“src”:“url3”,“category”:“E”},
{“id”:“39”,“src”:“url4”,“category”:“E”},
{“id”:“42”,“src”:“url5”,“category”:“F”},
{“id”:“49”,“src”:“url6”,“category”:“B”},
{“id”:“44”,“src”:“url7”,“category”:“F”}];
obj=$.grep(obj,函数(元素,索引){
return element.category==“F”//将元素保留在类别F中
});
控制台日志(obj)
当您执行以下操作时:

var obj = $.post( url, {term: term }, function(data){
}, 'json');
obj
是一个承诺,而不是响应数据

您需要访问成功回调中的响应数据

$.post( url, {term: term }, function(data){
    var obj = $.grep(data, function(element, index){
        return element.category == "F" // keep elements in category F
    });
    console.log(obj);    
}, 'json' );

grep
的结果是一个对象数组。在进行字符串比较时始终使用三重等于(==)。@Samuel,为什么===而不是==?在我的案例中,这两种方法似乎都有效。这是一种最佳实践,其中===还进行类型检查,因此更具可预测性。这里还有一些信息:。记住ajax是异步的。请详细说明一下好吗?在这种情况下异步调用的含义是什么?最好在本教程类型的答案中进行解释