【问题标题】:for-in loop to for loop or forEachfor-in 循环到 for 循环或 forEach
【发布时间】:2018-01-14 05:38:25
【问题描述】:

好的,我有以下情况。我需要将此 for-in 循环转换为 for 循环或 forEach。我尝试了几个不同的示例,但似乎无法将代码附加到页面。 for-in 循环可以工作,但是对于我需要编写的代码,这是不允许的。

这是一个示例变量

var work = {
        "jobs": [{

                "employer": "Java",
                "title": "Script",
                "dates": "2017",
                "description": "description",
            }
        }

这是我必须工作的代码。当前处于 for-in 循环中,但需要将其放入 for 或 forEach 循环中。

function displayWork() {
    for (job in work.jobs) {
        //create new div for work experience
        $("#workExperience").append(HTMLworkStart);
        //concat employer and title
        var formattedEmployer = HTMLworkEmployer.replace("%data%",
            work.jobs[job].employer);
        var formattedTitle = HTMLworkTitle.replace("%data%", work.jobs[job].title);
        var formattedEmployerTitle = formattedEmployer + formattedTitle;
        $(".work-entry:last").append(formattedEmployerTitle);

        var formattedDates = HTMLworkDates.replace("%data%", work.jobs[job].dates);
        $(".work-entry:last").append(formattedDates);
        var formattedDescription = HTMLworkDescription.replace("%data%",
            work.jobs[job].description);
        $(".work-entry:last").append(formattedDescription);
    });
}

displayWork();

【问题讨论】:

  • 您的示例代码不是有效的 JSON。你确定它是正确的吗?另外,请记住在以后标记您问题的语言;我在这个问题中添加了 JavaScript 和 jQuery 标记:)
  • Seconding @ObsidianAge - 另外,我刚刚尝试清理您的代码块,JavaScript 中也存在语法问题。我建议为您的编辑器准备一个 linter——它可以帮助您在简单的语法问题成为浏览器问题之前发现它们。
  • "我需要转换这个 for-in 循环 [...] [它适用于我,但是] 不允许。" - 为什么?什么不允许?
  • 它适用于我正在处理的项目。讲师帮助构建了项目的一部分,但我被教导使用 for-in 方式进行几个示例,但没有给出任何示例说明如何在 for 循环中进行操作,并且对于提交,不允许使用 for-in 循环。

标签: javascript jquery for-loop foreach for-in-loop


【解决方案1】:

看起来您将在工作 object 中有一个 array 作业,尽管您的示例缺少作业数组的右方括号,它可能是如果数组中有多个条目,则更清楚。

给定这样的数据结构:

var work = {
  jobs: [
    {
      employer: "example1"
    },
    {
      employer: "example2"
    },
    {
      employer: "example3"
    }
  ]
}

您可以使用简单的 for 循环,因为作业数组将具有从零开始的连续整数键:

for (var i = 0; i < work.jobs.length; i++) {
  // do stuff with current job in work.jobs[i]
  var current_employer = work.jobs[i].employer;
}

【讨论】:

  • @ChadAndersen -- 很高兴您找到了一个可行的解决方案 -- 请记住标记您选择的答案,以便发帖者获得赞誉,并且该帖子的访问者很快就会找到适合您的解决方案。
猜你喜欢
  • 2018-11-14
  • 1970-01-01
  • 1970-01-01
  • 2014-04-19
  • 2011-07-12
  • 2017-01-05
  • 1970-01-01
  • 2017-02-12
  • 2019-04-04
相关资源
最近更新 更多