如何在JavaScript中搜索JSON数组中的特定参数
How to search particular parameter in an array of JSON in JavaScript?
我在这里做了一件非常简单的事情:使用他们的图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);
这种方法适用于任何对象。。。
相关文章:
- 从node.js向CasperJS传递参数数组
- 如何从参数数组中调用回调
- 传递参数数组而不更改此项
- 在参数数组中传递整数数组
- 如何在JavaScript中获取字符串表示的参数数组
- 使用包含参数数组的数组调用函数,而不是仅列出数组
- JavaScript 修改 URL 参数数组
- 如何将参数数组传递给 JavaScript 中的另一个函数
- 传递参数数组
- 带有函数参数数组的闭包
- 将 JavaScript new 关键字与可变长度参数数组一起使用
- JavaScript:为什么更改参数变量会更改“参数”“数组”
- 如果使用参数数组调用,则日期会更改结果
- 试图理解Javascript中参数数组的概念
- Javascript:如何使用apply方法传递参数数组,然后在被调用的函数中访问它
- 发送单个参数与参数数组
- Array.from(arguments)是创建参数数组的一种可接受的方法
- 函数参数数组,如何影响reference =[]或reference.concat(array2)
- 在javascript中构建参数数组
- Javascript:是已弃用的参数数组