实际上我想在一个json数组中搜索一个属性的值。现在一个条件是该属性不会出现在数组的所有子节点中。这是我的json数组。
[{
"heading1":"heading1",
"heading2":"heading2",
"heading3":"heading3",
"heading4":"heading4",
"heading5":"heading5",
"heading6":"heading6"
},
{
"column1":65536,
"column2":"school",
"column3":"testing purpose",
"column4":"DESKTOP",
"column5":"ACTIVE",
"column6":true,
"column7":"a6cc82e0-a8d8-49b8-af62-cf8ca042c8bb"
},
{
"column1":98305,
"column2":"Nikhil",
"column3":"Test",
"column4":"LAPTOP",
"column5":"ACTIVE",
"column6":true,
"column7":"a6cc82e0-a8d8-49b8-af62-cf8ca042c8bb"
}]
所以目前我正在使用每个循环但是像这样
var obj = $.parseJSON(JSON.stringify(response));
$.each(obj, function () {
console.log("heading1", this['heading1']);
});
这里的响应来自mserver,它是json数组
现在我想知道我可以在json数组中搜索这个属性而不使用jQuery中的循环。
答案 0 :(得分:2)
根据您的示例代码,我理解您拥有的是一个对象数组,并且您希望找到具有一个特定属性和/或值的对象:
如果对象具有属性
,则返回truevar results= arr.filter(function(item){ return item.hasOwnProperty("column5"); });
或者,当您找到该属性时,您可以执行其他操作:
arr.filter(function(item){
if (item.hasOwnProperty("column5")) {
return item["column5"] === 'demo 01'; //or item.column5 === 'demo 01'
}
return false;
});
这仅适用于IE9 +,如果您需要在旧版本的IE中运行,请按照polyfill下的说明进行操作:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
答案 1 :(得分:1)
最好使用循环。但是如果JSON的格式是常规的,那么你可以使用regex来获取响应字符串中的值。
我不推荐这种方法,只是指出它存在。
var value = "heading1";
if( (new RegExp('"' + value + '"')).test(response) ){
// Found value
};
在这里,我们获取所需的值,将其包装在引号中并在响应中搜索它。
这有几个问题,例如:
这就是为什么它取决于你知道数据的格式。
编辑:
您可以使用此条件而不是正则表达式来解决问题2。但它给你的灵活性较低。
response.indexOf('"' + value + '"') !== -1
答案 2 :(得分:1)
您可以查看
var obj = $.parseJSON(response);
$.each(obj, function (index,value) {
if(typeof obj[index].heading2 !== "undefined")
{
alert(obj[index].heading2);
}
当在数组元素的其他对象中找不到时,它返回undefined。你可以这样检查。
答案 3 :(得分:0)
试试这个,
$.each(object,function(key, value){
console.log(key);
console.log(value);
});
答案 4 :(得分:0)
你可以使用这个JS lib; DefiantJS(http://defiantjs.com)。此lib使用“搜索”方法扩展全局对象JSON - 您可以使用该方法对JSON结构执行XPath查询。就像你举例说明的那样。
使用XPath表达式(标准化查询语言),您可以找到您正在寻找的任何东西,DefiantJS将为您做繁重的工作 - 让您的代码整洁干净。
这是这段代码的小提琴:
http://jsfiddle.net/hbi99/q8xst/
以下是代码:
var data = [
{
"heading1": "heading1",
"heading2": "heading2",
"heading3": "heading3",
"heading4": "heading4",
"heading5": "heading5",
"heading6": "heading6"
},
{
"column1": 65536,
"column2": "school",
"column3": "testing purpose",
"column4": "DESKTOP",
"column5": "ACTIVE",
"column6": true,
"column7": "a6cc82e0-a8d8-49b8-af62-cf8ca042c8bb"
},
{
"column1": 98305,
"column2": "Nikhil",
"column3": "Test",
"column4": "LAPTOP",
"column5": "ACTIVE",
"column6": true,
"column7": "a6cc82e0-a8d8-49b8-af62-cf8ca042c8bb"
}
],
res = JSON.search( data, '//*[column4="DESKTOP"]' );
console.log( res[0].column2 );
// school