我觉得这是一个简单的修复,但我不能为我的生活找到错误。当我运行这个脚本时,我一直得到未定义的值,该脚本正在检查JSON文件中的数组是否有布尔数据。我把它放在一个小提琴里。滚动到JS部分的底部。以下是那些不想切换标签的人的代码。
$.ajax({
url: "/echo/json/",
data: data,
type: "POST",
success: function (response) {
//Loop Start
for (var fund in response.fundClass){
console.log(fund.class);
if(fund.xbrl == false){
$(fund.class + " .xbrl").addClass(".hide");
}
if(fund.prospSum == false){
$(fund.class + " .prospSum").addClass(".hide");
}
}
//Loop End
}
});
答案 0 :(得分:1)
问题在于您将“response.fund Class”视为对象,而它是一个数组。
for (var i = 0; i < response.fundClass.length; i++) { // looping the Array
var fund = response.fundClass[i]; // get the object from the Array
console.log(fund.class);
if (fund.xbrl == false) {
$(fund.class + " .xbrl").addClass(".hide");
}
if (fund.prospSum == false) {
$(fund.class + " .prospSum").addClass(".hide");
}
}
答案 1 :(得分:0)
看起来response.fundClass
是一个数组。所以for var in
只是给出键,尝试通常的循环,而这是明确的方法,
for (var i =0 ; i < response.fundClass.length; i++){
var fund = response.fundClass[i];
console.log(fund.class);
if(fund.xbrl == false){
$(fund.class + " .xbrl").addClass(".hide");
}
if(fund.prospSum == false){
$(fund.class + " .prospSum").addClass(".hide");
}
}
希望这有帮助!
答案 2 :(得分:0)
当您使用for..in
循环时,您将获得键而不是值。 fund
将是数组的关键,而不是它的值。
for (var key in response.fundClass){
var fund = response.fundClass[key];
console.log(fund['class']);
}
但是,由于response.fundClass
是一个数组,因此不应使用for..in
。只需使用“普通”for
循环:
for(var i = 0; i < response.fundClass.length; i++){
var fund = response.fundClass[i];
console.log(fund['class']);
}
答案 3 :(得分:0)
作为传统for(;;)
循环(这是适当的传统数组枚举方法)的替代方法,是使用Arrays.forEach
(垫片广泛可用)。 forEach
将枚举数组 1 中的所有项:
response.fundClass.forEach(function (fund) {
// Invoked once per each item, with fund being the value of the item.
// This is nice for several reasons, warranted or not here:
// 1. No explicit lookup by key/index or "extra" variables
// 2. Each loop is it's own execution context
});
1 仅枚举具有分配的值的项目,但对于从JSON恢复的阵列,这不是问题。