【问题标题】:Pass in For Loop Parameter into Each Statement将 For 循环参数传入每个语句
【发布时间】:2012-06-08 19:01:45
【问题描述】:

我有一个 JSON 提要被拉入每个语句。我想做的是 for 循环 var i 我希望在每个语句中使用这个值。在下面的示例中,for 循环将运行 0、1、2。如果 i == 1 则我想运行 JSON 提要,但仅适用于 i = 1 值。目前,当 if 语句被触发时,JSON 每条语句都会遍历 b/c 的所有项目,它的 i 值从 0 开始。所以我现有的 console.log 返回 0、1、2。我希望它返回只有 1. 感谢您的帮助。

编辑
我的重点是在每个语句中使$.each(data.DATA, function(i, item) {i 在for 循环语句中使用i 等于的数字。因此,如果 JSON 文件中有 3 项,则只会运行第 1 项。

for (var i = 0; i < 2; i++) {
    if (i == 1) {
        $.getJSON("/json/v2_ilt_map.cfm?feedtype=ILTMAP_SCHEDULED&customerID=1&TrainingObjectParent=3", {}, function(data, i) {
            $.each(data.DATA, function(i, item) {
                console.log(i);
            }
        }):
    }
}​

【问题讨论】:

    标签: javascript jquery json google-maps


    【解决方案1】:

    您需要引入一个额外的函数作用域来完成这项工作。

    function checkOnly(i) {
      return function(data) {
        $.each(data.DATA, function(ii, item) {
          if (ii == i) console.log(ii);
        });
      };
    }
    
    for (var i = 0; i < 2; i++) {
        if (i == 1) {
            $.getJSON("/json/v2_ilt_map.cfm?feedtype=ILTMAP_SCHEDULED&customerID=1&TrainingObjectParent=3", {}, checkOnly(i));
        }
    }
    

    这里,传递给$.getJSON 的回调是在另一个函数中创建的。通过这样做,在.each() 循环中检查的变量“i”是for 循环中“i”的副本。因此,处理函数有一个固定值可供比较。

    【讨论】:

    • 这看起来很有希望。给我一点时间来测试一下。
    • @HelpInspireMe 这是一个常见问题的变体。 JavaScript 变量作用域仅在函数级别引入这一事实对于那些习惯于 Java、C++ 等的人来说是一个绊脚石。但是,由于 JavaScript 具有真正有效的闭包,因此很容易克服这一障碍。
    【解决方案2】:
    for (var i = 0; i < 2; i++) {
      var x = i;
      if (i == 1) {
        $.getJSON("/json/v2_ilt_map.cfm?feedtype=ILTMAP_SCHEDULED&customerID=1&TrainingObjectParent=3", {}, function(data, i) {
            $.each(data.DATA, function(n, item) {
                if(n == x){
                    console.log(n);
                    break;// you can use break if you want
                }
            }
        }):
        break; // you can use break if you want
    }
    

    }​

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      相关资源
      最近更新 更多