【发布时间】:2017-01-28 23:38:15
【问题描述】:
我需要生成一个 JSON 对象总数的数字,例如:“6 type_A programs in your country”。 我有一个 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 查找,它根据传递的 var 过滤与 a_Programs && 匹配列表中的国家/地区的所有类别。然后在它下面计算总长度并创建一个数字作为变量。该脚本有效但不准确 - 我认为它仅在国家/地区 === 到仅在其数组中列出的第一个国家/地区时才计算在内,如果它是第 2、第 3 等则忽略它,但不确定。
问题似乎出在这里:
val.countries[0] === varCountry
它应该如何工作:例如,如果国家是“中国”,我希望它查看 JASON 并找到程序类型 && 国家数组并返回两者都是 a_Program && 的 JSON 对象的总数当地国家。
【问题讨论】:
-
永远不要使用
'async': false!这是一种糟糕的做法,浏览器供应商已弃用它。您应该会在控制台中看到警告
标签: jquery arrays json filtering