我有一个JSON结构,如:
{
listOfVal: [
val1,
val2,
val3
]
name: "app"
id: "9209629"
}
我想检查listOfVal
是否说val2
。 val2
可以在任何索引处。
此JSON是对API调用的响应的一部分,我正在使用:
var data = JSON.parse(responseBody);
保存JSON数据。
答案 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。