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"]