2016-09-20 9 views
2

JSONオブジェクトの総数を生成する必要があります。例えば、 "あなたの国のtype_Aプログラム"です。 私はJSONを持っており、タイプと国をフィルタリングしています。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として数値が作成されます。このスクリプトは動作しますが正確ではありません - それは配列の中で最初にリストされたcountriyに国が===あるときだけカウントし、それが2番目、3番目などであれば無視します。

問題はここにあると思われる:

それがどのように動作するかを
val.countries[0] === varCountry 

:国が例えば「中国」であるならば、私は、これはJASONに目を通すと、プログラムの種類& &に国を見つけたいです配列を返し、ローカル国のa_Program & &のJSONオブジェクトの総数を返します。

+0

を '「非同期」を使うことはありません:は' false'!それはひどい習慣であり、ブラウザのベンダーはそれを非難しました。あなたのコンソールに警告が表示されるはずです – charlietfl

答えて

1

val.countriesが配列である場合は、代わりにこのようなものを使用することができるはずです。

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

これは私が感謝のために探していたものです。しかし、今IE11では動作しません。 –

+0

'var varCountry = $(" body ").data(" country "); var programsJSON = null; var a_Programs; $アヤックス({ '非同期':偽、 'グローバル':偽、 'URL': '/ ProgramListing'、 'のdataType': "JSON"、 '成功':機能(データ) { programsJSON =データ; \t \t countList();} }); '' –

+0

関数countList(){ \t VAR find_A = programsJSON.Programs.filter(関数(ヴァル、インデックス、アレイ){ \t \t return val.program_type === 'これはA型です' && val.countries [0] === varCountry; \t}); \t \t a_Programs = find_A.length; \t $( "。program-count.a_Programs")。テキスト(a_Programs); \t \t返品プログラムJSON; \t \t}; –

関連する問題