【问题标题】:javascript - is an alert in a for-loop possiblejavascript - 可能是 for 循环中的警报
【发布时间】:2014-12-05 15:16:52
【问题描述】:

是否可以在警报语句中编写 for 循环?

仔细观察问题: 如果我想在一个警报语句中打印数组的内容。我想知道这是否可能。

一个数组:

myArray["a1", "a2", "a3", "a4"]

仅在一个警报语句中打印类似以下内容:

Here your great content of myArray: 
a1 
a2 
a3 
a4

我正在考虑类似的事情:

alert("
Here your great content of myArray:\n" +

for (var i = 0; i < myArray.length; i++) {
     myArray[i] + "\n";
}

);

当然它不起作用..,但我有点卡住了。希望得到建设性的帮助,即使乍一看似乎是一个愚蠢的问题。

提前致谢

【问题讨论】:

  • 恕我直言,你不能:)
  • 你可以写类似alert("Here your great content of myArray:\n" + myArray.join("\n"))

标签: javascript for-loop output alert


【解决方案1】:

我想在一个警报语句中打印数组的内容。

不需要循环。只需使用 .join() 创建一个由换行符(或您想要的任何字符)分隔的字符串。

alert("Here your great content of myArray:\n" + myArray.join("\n"));

仅供参考,在 ECMAScript 6 中,您将能够做到这一点:

alert("Here your great content of myArray:\n" + [for (s of myArray) s + "\n"].join(""));

这对于更复杂的情况会很方便。

【讨论】:

    【解决方案2】:

    alert 中,您可以传递一个字符串。您还通过了for 声明。这是不正确的。为了得到你想要的,我建议你构建一个函数来构建这个字符串,然后在警报中调用它。

    类似这样的:

    function getMessage(){
        var text="Here your great content of myArray:\n";    
        for (var i = 0; i < myArray.length; i++) {
         text += myArray[i] + "\n";
        }
    }
    
    alert(getMessage());
    

    【讨论】:

      【解决方案3】:

      问题是:你能把循环转换成字符串吗?不,你不能。这是语法错误。

      【讨论】:

        【解决方案4】:

        不,但你可以这样做:

        var text;    
        for (var i = 0; i < myArray.length; i++) {
             text += myArray[i] + "\n";
        }
        alert("Here your great content of myArray:\n" + text);
        

        【讨论】:

          【解决方案5】:

          有点:

          alert("Here your great content of myArray:\n" + myArray.map(function(i){ 
                    return i + "\n"
          }).join(''))
          

          【讨论】:

            【解决方案6】:

            您不能将 for 语句传递给警报,但您可以使用数组数据创建一个字符串并将其传递给警报,如下所示:

            array = ['some', 'text', 'to', 'print']
            
            alert("message: " + array.map(function(s){return s;}))

            join 很好,但是对于 dict 对象你不能使用它

            array = [{text:'some'}, {text:'text'}, {text:'to'}, {text:'print'}]
            
            alert("message: " + array.map(function(s){return s['text'];}))

            希望对你有帮助

            【讨论】:

              【解决方案7】:

              有一个语法错误,你不能在警报函数中执行 javascript

              var myArray=["a1", "a2", "a3", "a4"];
              
              var alertContent= "Here your great content of myArray:\n" ;
              
              for(var i=0;i<myArray.length;i++){ 
                  alertContent+=myArray[i]+'\n';
              }
              alert(alertContent);
              

              你可以使用上面的代码得到你想要的输出

              【讨论】:

                【解决方案8】:

                显而易见的答案是使用 Jan 建议的 .join() ,但我假设您想在循环中做一些事情来决定要包含哪些数组元素,例如仅当它以 a 开头时(在这种情况下,无论如何都是它们,但是嘿嘿)。在这种情况下,方法是将警报文本创建为变量,然后向变量发出警报。比如……

                myArray["a1", "b2", "b3", "a4"]
                msg = "Here is your great content of myArray:\n";
                for (var i = 0; i < myArray.length; i++) {
                    if(myArray[i].substring(0,1) == "a") {
                        msg+=myArray[i] + "\n";
                        }
                    }
                alert(msg);
                

                这将导致

                Here is your great content of myArray:
                a1
                a4
                

                【讨论】:

                  猜你喜欢
                  • 2016-08-13
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-11-02
                  • 2012-11-18
                  • 2017-12-23
                  相关资源
                  最近更新 更多