Javascript 在JSON对象中搜索字段==1
可能重复:Javascript 在JSON对象中搜索字段==1,javascript,jquery,json,Javascript,Jquery,Json,可能重复: 我有一个JSON,它表示鸟类物种的列表。每只鸟都是JSON中的一个对象。在每个对象中都有表示位置的字段。这些位置以字母数字编码,如['P1UBA'、'P1UBC'等]。这些字段中的值1表示存在,而0表示不存在 下面的代码显示了其中一个对象(整个JSON中有150个) 如何搜索此对象并返回位置字段==1?理想情况下,我会创建一个新数组,它是由这些字段==1组成的字符串 使用上面的对象将产生一个新的 var birdsMatch=['P1UBC','P1ABF'] 我想使用jquer
我有一个JSON,它表示鸟类物种的列表。每只鸟都是JSON中的一个对象。在每个对象中都有表示位置的字段。这些位置以字母数字编码,如['P1UBA'、'P1UBC'等]。这些字段中的值1表示存在,而0表示不存在 下面的代码显示了其中一个对象(整个JSON中有150个) 如何搜索此对象并返回位置字段==1?理想情况下,我会创建一个新数组,它是由这些字段==1组成的字符串 使用上面的对象将产生一个新的
var birdsMatch=['P1UBC','P1ABF']
我想使用jquery,但如果它更高效,我愿意使用纯javascript解决方案,因为每个bird对象都在一个名为Birds的数组中,下面的方法就可以了
$(data.Birds).each(function(index, element){
if(element.value == '1')
alert("FOUND BIRDS IN " + element.name);
})
假设每个bird对象都位于一个名为Birds的数组中,那么下面的操作就可以了
$(data.Birds).each(function(index, element){
if(element.value == '1')
alert("FOUND BIRDS IN " + element.name);
})
其中birdObj与上面给出的obj示例类似
其中birdObj类似于您上面给出的obj示例。您必须遍历所有bird,然后遍历每个bird的所有属性以收集位置(假设var
birds
包含解析的JSON):
您必须遍历所有bird,然后遍历每个bird的所有属性来收集位置(假设var
birds
包含解析的JSON):
使用:
使用:
虽然我给了你一个完整的答案,但我强烈建议你阅读Felix Kling建议的文章作为副本,以便更好地理解遍历js对象的工作原理。你的问题很可能会以重复的方式结束——不过这次我不打算投票结束,因为我认为这对你的问题来说太笼统了。虽然我给了你一个完整的答案,但我强烈建议你阅读Felix Kling建议的文章作为副本,以便更好地理解遍历js对象的工作原理。你的问题可能会被愚弄而结束——不过这次我不会投票结束,因为我认为这对你的问题来说太笼统了。谢谢!我喜欢的是少量的代码:)谢谢!我喜欢的是少量的代码:)
var attr, result_arr = [];
for (attr in birdObj){
if (birdObj[attr] === "1"){
result_arr.push(attr);
}
}
var birdsMatch = {};
for(var i=0; i<birds.length; i++) {
// Create an empty array to keep locations found for each species
birdsMatch[birds[i].Species] = [];
for(var loc in birds[i]) {
if(birds[i][loc] === 1) {
// Found! Add location to the correct species array
birdsMatch[birds[i].Species].push(loc);
}
}
}
{
AMAV : ['P1UBC','P1ABF'],
OTHER_SPECIES : [], // not found in any locations
YET_ANOTHER : ['LOC1']
// ...
}
var birds = $.map(birdObj, function(value, key) {
return value === '1' ? key : null;
});
//birds => ["P1UBC", "P1ABF"]