请看一下 FIDDLE 。为什么B项目不返回-1
,因为它在字符串allergyfree
中没有值“gluten”?
这是JSON文件:
[{"title":"A","allergyfree":"sugar,salt,yeast,wheat,gluten"},{"title":"B","allergyfree":"sugar,salt,starch,yeast,wheat,preservatives"}]
脚本:
$.ajax({
url: "url.json",
success: function (data) {
$(data.query.results.json.json).each(function (index, item) {
var title = item.title;
var allergyfree = item.allergyfree;
if(allergyfree.length !== 0) {
allergyfree = allergyfree.split(",");
$.each(allergyfree,function(i,allergy){
$('.'+title+allergy).append(jQuery.inArray(allergy, allergyfree));
});
}
});
},
error: function () {}
});
我问这个问题是因为我有一个问题要检查this thread中是否存在该值,有人建议使用inArray
函数,但它无效。
答案 0 :(得分:1)
如果您调试(或只是查看响应),您会发现您的ajax请求未返回B
和gluten
的条目。因此,inArray
和title
的组合永远不会调用allergy
。这就是为什么那个地方留空了。
事实上,您的代码保证您永远不会遇到inArray
找不到条目的情况。 您正在同一个数组中搜索数组中的每个元素。很明显,元素将始终被找到。
您应该做的是循环查看您关注的所有过敏症的列表,然后在您的请求结果中检查这些过敏症。像这样:
var allergies = ["gluten", "yeast"];
$.ajax({
/* ... */
$.each(allergies,function(i,allergy){
$('.'+title+allergy).append(jQuery.inArray(allergy, allergyfree));
});
/* ... */
});