Мне нужно создать число, представляющее собой общее количество объектов 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. Этот скрипт работает, но не является точным - я думаю, что он учитывается только в том случае, когда страна === только в списке, указанном первым в своем массиве, и игнорирует его, если это 2-й, 3-й и т. Д., Но не уверен.
Проблема, кажется, здесь:
val.countries[0] === varCountry
Как это должно работать: Если страна «Китай», например, я хочу, чтобы это смотреть через JASON и найти тип программы в & & страну массив и вернуть общее количество объектов JSON, которые являются как a_Program & & в местной стране.
никогда не используйте '«асинхр»: false'! Это ужасная практика, и разработчики браузеров устарели. Вы должны видеть предупреждения в своей консоли. – charlietfl