如何在JavaScript中搜索JSON数组中的特定参数

How to search particular parameter in an array of JSON in JavaScript?

本文关键字:参数 数组 搜索 JavaScript JSON      更新时间:2023-09-26

我在这里做了一件非常简单的事情:使用他们的图API获取Facebook新闻提要。我正在接收json对象并将其获取到页面中。"赞"是由一系列JSON组成的(显然):

data.likes:

{
    "count":2,
    "data":[
        {"name":"Jennifer Doe","id":"{user_id}"},
        {"name":"John Doe","id":"{user_id}"}
    ]
}

我的目标是知道当前用户是否喜欢它——假设我有当前用户的user_id。那么,检查当前用户是否喜欢这篇帖子的最简单方法是什么

我知道我可以设置循环并遍历每个数据,但这不仅效率低下,而且看起来很糟糕。我也可以使用$.inArray()来查找特定的JSON对象,但我希望只能通过user_id进行搜索。

如有任何帮助,我们将不胜感激。谢谢

我立刻想到两个解决方案:

-像这样的for循环

for (jsonobj in data.likes.data){
  //scan each jsonobj for the user
}

-您也可以使用转换字符串中的JSON对象

JSON.stringify(jsonobj)

然后用一些搜索方法在其中搜索用户id(例如"搜索":http://www.w3schools.com/jsref/jsref_search.asp或索引:http://www.w3schools.com/jsref/jsref_indexof.asp)。

如果你需要更多的细节,我可以详细说明。

最简单的方法是只执行for循环,您可以使用javascript eval方法创建一个通用方法,只返回您要查找的对象。

function searchArr(arr, field, val) {
  var output = [];
  for (var i = 0; i < arr.length; i++) {
    if (eval('arr[i].' + field) == val) {
      output.push(arr[i]);
    }
  }
  return output;
}

并且可以使用您的数据以这种方式调用var matches = searchArr(data, 'id', userId);

这种方法适用于任何对象。。。