我想通过js / jquery检查一个值是否存在于json数组中:
[{"pathway_action_fk":"1"},{"pathway_action_fk":"2"},{"pathway_action_fk":"4"}]
我尝试过没有成功:
$.ajax({
type: "POST",
url: "scripts/get_actions_allowed.php",
data: 'pathway=' + pathway_pk,
dataType: "json",
success: function(returnedData) {
if ($.inArray('1', returnedData)){
$('#script').addClass('active');
}...
如果我成功后加入:
alert(returnedData);
我得到[object Object],[object Object]
,这是应该返回的正确数量的对象。删除json作为dataType显示正确的值...
答案 0 :(得分:3)
您的数组包含JSON对象。因此,您需要查看每个对象的内部,以查看其字段是否具有所需的值(或者至少,这是我收集到的,您尝试根据代码进行判断)。
所以也许是这样的:
$(returnedData).each(function() {
if (this.pathway_action_fk == 1) {
$('#script').addClass('active');
}
});
答案 1 :(得分:1)
数组的元素是对象,而不是字符串。要检查的值是这些对象的pathway_action_fk
属性。所以你必须在检查前深入了解。
if ($.inArray('1', returnedData.map(function(x) {
return x.pathway_action_fk;
})) != -1);
此外,您需要将$.inArray
的结果与-1
进行比较 - 它返回找到的元素索引,该索引可以是0,而不是布尔值。
答案 2 :(得分:1)
$.ajax({
type: "POST",
url: "scripts/get_actions_allowed.php",
data: 'pathway=' + pathway_pk,
dataType: "json",
success: function(returnedData)
{
for(var i=0, max=returnedData.length; i<max; i++)
{
if(returnedData[i].pathwy_action_fk==='1')
{
$('#script').addClass('active');
break;
}
}
}
})
答案 3 :(得分:0)
var JSN =
[
{
"email": "msshah@gmail.com"
},
{
"email": "ms@gmail.com"
},
{
"email": "ams@gmail.com"
},
{
"email": "no@gmail.com"
}
];
// var hasMatch =false;
$(JSN).each(function() {
if (this.email == "yes@gmail.com") {
alert("found: " + JSON.stringify(this));
}else{
alert('Not Found');
}
});