在Javascript中循环遍历JSON数组元素

时间:2014-07-11 00:56:17

标签: javascript json

我有一个JSON结构,如:

{
    listOfVal: [
        val1,
        val2,
        val3
    ]
    name: "app"
    id: "9209629"
}

我想检查listOfVal是否说val2val2可以在任何索引处。

此JSON是对API调用的响应的一部分,我正在使用:

var data = JSON.parse(responseBody);

保存JSON数据。

2 个答案:

答案 0 :(得分:3)

首先,您的JSON无效。你缺少逗号和引号。

{
    "listOfVal": [
        val1,
        val2,
        val3
    ],
    "name": "app",
    "id": "9209629",
    ...
}

获得data后,使用for循环对其进行迭代。您可以使用indexOf,但这在IE < 9

中无效
function isInJSON(data, value){
    for(var i=0; i<data.listOfVal.length; i++){
        if(data.listOfVal[i] === value){
            return true;
        }
    }
    return false;
}

如果您的val是数组或对象,则这并不总是有效。如果是,您可以运行for循环来比较它们,或者您可以使用underscore.js_.isEqual(obj1,obj2)

OP请求使用forEach

var value; //define what you're looking for
data.listOfVal.forEach(function(val,key){
    if(val === value){
        alert('MATCH FOUND: responseBody["' + String(key) + '"] = ' + String(value));
    }
});

答案 1 :(得分:-2)

如果在使用JSON.parse之后你有一个像这样的对象:

data = {
    listOfVal: [ 
        val1, 
        val2, 
        val3 
    ],
    name: 'app',
    id: '9209629'
    ...
}

然后你可以像访问任何其他对象一样访问listOfVal,并使用indexOf来尝试达到val2。

data.listOfVal.indexOf(val2);

这将返回一个非负整数索引,其中val2驻留在数组中,或者它将返回-1,表示数组中不存在val2。