将JSON传递给循环

时间:2014-04-03 19:59:12

标签: javascript jquery json

我觉得这是一个简单的修复,但我不能为我的生活找到错误。当我运行这个脚本时,我一直得到未定义的值,该脚本正在检查JSON文件中的数组是否有布尔数据。我把它放在一个小提琴里。滚动到JS部分的底部。以下是那些不想切换标签的人的代码。

FIDDLE

$.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

   }
});

4 个答案:

答案 0 :(得分:1)

问题在于您将“response.fund Class”视为对象,而它是一个数组。

Your fiddle updated

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恢复的阵列,这不是问题。