【发布时间】:2015-06-07 23:52:16
【问题描述】:
关于previous post,我很难确定在哪里放置一个循环闭包,用于匹配 JSON 返回的数组。
以下是我修改后的代码:
$(function()
{
var $reports = $('#repOut');
var techCount = 0;
var repCount = 0;
techs = ["Name_1", "Name_2"];
function counts(tech, count)
{
this.tech = tech;
this.count = count;
}
$.ajax(
{
type: 'GET',
url: 'https://api.trello.com/1/board/BOARD_ID/checklists?checkItem_fields=name,state&key=MY_KEY&token=MY_TOKEN',
dataType: 'jsonp',
success: function(data)
{
$.each(data, function(i, repName)
{
var items = repName.checkItems;
for (i = 0; i < items.length; i++)
{
for (var n = 0; n < techs.length; n++)
{
techName = techs[n];
}
var rex = new RegExp(techName, "i");
var num = /\(\d+\)/;
if (rex.test(items[i].name))
{
var repFull = items[i].name;
repName = repFull.replace(/\.*$|-.*$/, "");
if (num.test(items[i].name))
{
var repNum = parseInt(/\d+/.exec(items[i].name), 10);
repCount += repNum;
}
}
}
});
var techCount = new counts(techName, repCount);
$reports.after("<table border =1 id='reports'><tr><th>Tech</th><th>Count</th></tr><tr><td>" + techCount.tech + "</td><td>" + techCount.count + "</td></td></tr></table>");
}
});
});
循环只返回 Name_2 的 JSON 值(但这一次,它被正确添加并显示在我的网页上)。我需要在我的techs 数组中获取 EACH 名称的这些值并输出它们。我已经阅读了许多关于闭包的网站/文章/答案,但我无法理解将它放在哪里/如何将它放在我的代码中!
谁能帮助提供一个示例,说明我的代码在使用闭包时会是什么样子?我什至怀疑需要关闭是对的吗?
【问题讨论】:
-
您缺少
techs、i、techName和repName的var关键字,但在i和repName的情况下,您正在覆盖您的函数参数。故意的? -
不,我认为不需要任何关闭。看起来你只是搞砸了循环结构。
-
感谢格式化。你现在能自己发现错误吗?提示:
techs上的循环... -
techs 循环的范围可能应该扩大 - 现在,它正在循环并在键 1 处停止,然后继续......?
-
您总是要将 techName 设置为“Name_2”
标签: javascript arrays json closures