【问题标题】:Referencing JSON object to filter with jQuery.grep()使用 jQuery.grep() 引用 JSON 对象进行过滤
【发布时间】:2016-07-13 12:32:58
【问题描述】:

感谢this post,其中接受的答案包括一个JS Fiddle,我能够验证我可以使用jQuery.grep() 过滤我的数据。但是,我无法使用服务器的输出来复制效果。我怀疑我在对象引用中忽略了一些明显的东西,但是作为 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, function(element, index){
  return element.category == "F" // keep elements in category F
});

console.log(obj);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

这是我对服务器的 Ajax 调用:

var obj = $.post( url, {term: term }, function(data){
}, 'json'
);

在执行console.log(obj); 时,我发现我的数据输出为控制台中的对象,但似乎无法访问它。为了使 grep 函数工作,我需要以对象数组的形式访问输出。它就在那里,等着我,但我该如何引用它呢?

【问题讨论】:

  • grep 的结果是一个对象数组。 MDN Array
  • 在进行字符串比较时始终使用三等号 (===)。
  • @Samuel,为什么 === 而不是 ==?两者似乎都适用于我的情况
  • 这是一种最佳实践,其中 === 也进行类型检查,因此更可预测。以下是更多信息:stackoverflow.com/questions/359494/….

标签: javascript jquery json object grep


【解决方案1】:

当你这样做时:

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' );

【讨论】:

猜你喜欢
  • 2015-06-19
  • 2023-04-09
  • 1970-01-01
  • 2016-11-17
  • 2021-12-19
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多