过滤JSON并比较数组值

时间:2016-09-20 21:58:26

标签: jquery arrays json filtering

我需要生成一个JSON对象总数的数字,例如:" 6 类型_A国家/地区的程序"。 我有一个JSON,并已经过它来过滤类型和国家。

JSON中的每个对象都包含一个"国家"数组(一些有很多国家,有些只有一个):

"countries":["China","Singapore","U.S.A.","United Kingdom"]

JS:

var varCountry = $( "body" ).data( "country");

var programsJSON = (function () {

    var programsJSON = null;
    var a_Programs;


    $.ajax({
       'async': false,
       'global': false,
       'url': '/ProgramListing',
       'dataType': "json",
       'success': function (data) {
          programsJSON = data;
       }
    });

    var find_A = programsJSON.Programs.filter(function(val, index, array) {
        return val.program_type === 'this is A type' && val.countries[0] === varCountry;
    });

    a_Programs = find_A.length; 
    $(".program-count.a_Programs").text(a_Programs);

    return programsJSON;

})(); 

目前它似乎工作,它通过JSON查看,它过滤所有匹配a_Programs&&和根据传递的var匹配列表中的国家/地区。然后在下面计算总长度并创建一个数字作为var。这个脚本有效,但不准确 - 我认为只有当国家===到国家首先列出的国家时才会计算,如果它是第二,第三等,则忽略它,但不确定。

问题似乎在这里:

val.countries[0] === varCountry

它应该如何运作:如果这个国家是"中国"例如,我希望通过JASON查看并找到程序类型&& country数组并返回同时为a_Program&&的JSON对象的总数。在当地。

1 个答案:

答案 0 :(得分:1)

如果val.countries是一个数组,您应该能够使用类似的东西:

return val.program_type === 'this is A type' && val.countries.indexOf(varCountry) > 0;