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オブジェクトの総数を返します。
を '「非同期」を使うことはありません:は' false'!それはひどい習慣であり、ブラウザのベンダーはそれを非難しました。あなたのコンソールに警告が表示されるはずです – charlietfl