检查json数组中是否存在值

时间:2013-08-05 04:47:55

标签: json jquery

我想通过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显示正确的值...

4 个答案:

答案 0 :(得分:3)

您的数组包含JSON对象。因此,您需要查看每个对象的内部,以查看其字段是否具有所需的值(或者至少,这是我收集到的,您尝试根据代码进行判断)。

所以也许是这样的:

$(returnedData).each(function() {
    if (this.pathway_action_fk == 1) {
        $('#script').addClass('active');
    }
});

示例:http://jsfiddle.net/qvsbT/

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

    }

});

示例:https://jsfiddle.net/wfh9ur1j/5/