检查值是否存在于JSON数组中。

3
我想通过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);

当我使用 dataType: "json" 时,我得到的是 [object Object],[object Object] ,这是正确应该返回的对象数。移除 json 类型后将显示正确的值......

4个回答

4

您的数组包含JSON对象。因此,您需要查看每个对象的内部是否具有所需值(根据您的代码推测,这似乎是您要做的事情)。

因此,可能需要类似于以下内容:

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

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


1
数组的元素是对象而不是字符串。您想要检查的值是这些对象的 pathway_action_fk 属性。因此,在检查之前,您必须进行深入挖掘。
if ($.inArray('1', returnedData.map(function(x) {
    return x.pathway_action_fk;
})) != -1);

此外,您需要将$.inArray的结果与-1进行比较--它返回找到的元素的索引,可能是0,而不是布尔值。

谢谢您提供的代码...尝试了一下,但无法让它正常工作,可能是我没有正确地实现它。 - IlludiumPu36

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;
            }
        }
    }
})

这就像原始代码一样,你没有查看 pathway_action_fk 属性。 - Barmar
哎呀,好的,抱歉。已更新。 - Rowman Pirce

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/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接