【问题标题】:Is it possible to use a value from within a 'for' loop outside of the actual loop cycle?是否可以在实际循环周期之外的“for”循环中使用值?
【发布时间】:2016-06-27 19:38:57
【问题描述】:

我有一个 for 循环循环遍历我的数组并将每个满足特定条件的值打印到控制台。我想获取这些值并将它们插入到循环外的变量中。这可能吗?

for (var i = 0; i < myArray.length; i++) {
    if (myArray[i].catType === 'I') {           
        console.log(myArray[i].location);            
    }
    ...
}

我想将从for 循环输出的任何内容插入到位于此for 循环之外的工具提示对象中。

var header = "<thead>" +
                 "<tr>" +
                     "<td class='legend-color-guide'><div style='background-color: " + series.color + ";'></div></td>" +
                     "<td class='key'><strong>" + <INSERT HERE> + "</strong></td>" +
                 "</tr>" +
             "</thead>";

如何做到这一点?

【问题讨论】:

  • 可以通过操作DOM直接插入值。 document.getElementById('your_id').innerHTML = value;
  • @Rohit 你不想在 for 循环中编辑 dom
  • 我认为@Rohit 的建议会起作用......这真的是非常糟糕的做法。编辑:再想一想,它实际上不会,因为循环的每次迭代都会覆盖该值...
  • 我的坏人。对不起:(
  • 一种(稍微)更好的方法是创建一个变量(在循环之前)来存储所有生成的 html,并在每次迭代时通过循环连接它,并在之后修改 DOM循环完成。

标签: javascript html arrays for-loop


【解决方案1】:

创建一个数组,每次满足条件时添加新值。

var arr = [];// initialize array

for (var i = 0; i < myArray.length; i++) {
    if (myArray[i].catType === 'I') {
        console.log(myArray[i].location);

        arr.push("Add Whatever Here");// append new value to the array
    }
}

【讨论】:

  • 或使用filter()
  • @zero298 给猫剥皮的方法有 1000 种,这只是一种方法。
  • 这太好了,谢谢大家。 @AdamBuchananSmith 第二部分仍然有点灰色。现在,当我将数组放在循环之外时,如何动态打印循环中的每个索引,其中我有 文本?
  • @KunalOjha 您是否尝试将 HTML 或纯文本输出为字符串?
  • 纯文本作为字符串
【解决方案2】:

这是可能的,但您不想(也不应该)使用控制台的输出。相反,您希望将值附加到变量,然后然后设置header 变量。喜欢:(我用了另一个例子)

var putIn = "";
for (i = 0; i < array.length; i++) {
    if (array[i] === x) {
        putIn += array[i].property;
        console.log(array[i].property);
    }
}
var final = "on the left side " + putIn + " on the right side";

如您所见,我已将值放入字符串并分别记录数组中的元素。无需将日志值用作插入字符串的值。

【讨论】:

  • 我想OP仍然想输出到控制台,他也给了你他想要putIn插入的html字符串。
  • 对于您在 var final 中的输出,我想从 putIn 数组中打印每个单独的项目,我认为您的输出将一次性提供该字符串中的整个数组,跨度>
  • @Kunal Ojha 对,我会更新我的答案。在 if 语句中,您可以简单地 console.log(array[i].property) 打印到控制台。
【解决方案3】:

定义一个全局变量。然后在循环周期中设置该变量。或者创建一个数组并将循环中的每个值推送到数组中,然后您可以从其他地方访问它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2020-04-05
    • 2020-02-05
    • 1970-01-01
    相关资源
    最近更新 更多