我不确定如何在给定此JSON对象数组的情况下完成此操作:
var stuff = [
{
'Address' : '123 Street',
'Name' : 'From'
},
{
'Address' : '456 Avenue',
'Name' : 'To'
}
]
所以我希望能够做的是根据其中一个属性(在本例中为“Name”)查询此对象数组,并返回与查询匹配的整个对象。
无论如何使用jquery或只是常规的javascript来执行此操作?
例如,我想返回名称==='从'
的整个对象答案 0 :(得分:5)
function findStuff(jsonobject, propertyToFind, valueToFind)
{
for (var i = 0; i < jsonobject.length; i++) {
if (jsonobject[i][propertyToFind] === valueToFind)
return jsonobject[i];
}
return null;
}
答案 1 :(得分:1)
for(var i=0; i<stuff.length; i++){
var item = stuff[i];
if(item.Name=='From')
....
}
答案 2 :(得分:1)
function findByName(ary,name){
for (var a = 0; a < ary.length; a++){
if (ary[a].Name == name)
return stuff[a];
}
return {};
}
var match = findByName(stuff,'From');
使用循环遍历对象。使用对象上的.Name
来读取JSON对象的属性值。
答案 3 :(得分:1)
$.each('stuff', function(key,value)
{
if (key == 'Name' && value == 'From')
{
alert('got it!');
}
});
答案 4 :(得分:0)
您可以使用此JS库 - DefiantJS(defiantjs.com),而不是编写自定义函数。其中使用“搜索”方法扩展了全局对象JSON。使用此方法,您可以使用XPath表达式搜索JSON结构,它将返回带有匹配项的数组(如果未找到匹配项,则返回空数组)。
var stuff = [
{
"Address": "123 Street",
"Name": "From"
},
{
"Address": "456 Avenue",
"Name": "To"
}
],
res = JSON.search( stuff, '//*[Name = "From"]' );
console.log( res[0].Address );
// 123 Street
这是一个工作小提琴:
http://jsfiddle.net/hbi99/4H57C/