Javascript 阵列在幕后是如何工作的?

Javascript 阵列在幕后是如何工作的?,javascript,arrays,while-loop,concatenation,Javascript,Arrays,While Loop,Concatenation,我想,我正在尝试使用基本运算符在JavaScript中创建自己的自定义数组 我正在读的这本书《雄辩的JavaScript》,在第1章中有一个练习,要求我使用“print”函数制作一个金字塔。我的任何解释器都没有打印功能,也没有说明如何制作打印功能。所以,我没有打印功能,我使用的是提醒 这是密码 var line = ""; var counter = 0; while (counter < 10) { line = line + "#"; print(line); counte

我想,我正在尝试使用基本运算符在JavaScript中创建自己的自定义数组

我正在读的这本书《雄辩的JavaScript》,在第1章中有一个练习,要求我使用“print”函数制作一个金字塔。我的任何解释器都没有打印功能,也没有说明如何制作打印功能。所以,我没有打印功能,我使用的是提醒

这是密码

var line = "";
var counter = 0;
while (counter < 10) {
  line = line + "#";
  print(line);
  counter = counter + 1;
}
var-line=”“;
var计数器=0;
while(计数器<10){
直线=直线+“#”;
打印(行);
计数器=计数器+1;
}
因此,我尝试使用警报,而不是:

var line = "";
var counter = 0;
while (counter < 10) {
  line = line + "#";
  alert(line);
  counter = counter + 1;
}
var-line=”“;
var计数器=0;
while(计数器<10){
直线=直线+“#”;
警戒线;
计数器=计数器+1;
}
但警报不是三角形的。这是一堆盒子,每一次磅牌的数量都在增加

我想创建一个字符串连接,然后打印出整个结果

这就是我想到的:

string = "";
counter = 0;
signs = "#";
while (counter < 10){
  string = string + signs + "\n";
  signs = signs + "#";
  counter = counter + 1;
}
alert(string);
string=”“;
计数器=0;
符号“#”;
while(计数器<10){
字符串=字符串+符号+“\n”;
符号=符号+“#”;
计数器=计数器+1;
}
警报(字符串);
所以,我只是想知道,在不知道如何创建数组变量的情况下,有没有更好的方法来创建数组?

这应该可以

var stringBuilder = "";
counter = 0;
signs = "#";
while (counter < 10){
  stringBuilder = stringBuilder + signs + "\n";
  signs = signs + "#";
  counter = counter + 1;
}
alert(stringBuilder);
var stringBuilder=”“;
计数器=0;
符号“#”;
while(计数器<10){
stringBuilder=stringBuilder+符号+“\n”;
符号=符号+“#”;
计数器=计数器+1;
}
警报(stringBuilder);
  • 换行符是反斜杠和“n”
  • 循环中只需要一个换行符

  • 以下代码应该可以工作:

    string = "";
    counter = 0;
    signs = "#";
    while (counter < 10){
      string = string + signs + "\n";
      signs = signs + "#";
      counter = counter + 1;
    }
    alert(string);
    
    string=”“;
    计数器=0;
    符号“#”;
    while(计数器<10){
    字符串=字符串+符号+“\n”;
    符号=符号+“#”;
    计数器=计数器+1;
    }
    警报(字符串);
    
    主要区别如下:

    • 您不能在正在构建的字符串中包含换行符,否则,先前迭代中的换行符仍将包含在后续迭代中
    • 换行符是
      \n
      而不是
      /n
    • string
      可以以空开头,因为每次都会附加一个“#”
    换行符是“\n”而不是“/n”。(通常,“转义”字符是反斜杠而不是正斜杠。)

    此外,您还有一个输入错误,您说的是
    符号=…
    ,而不是
    符号=…

    编辑:好的,您已经更新了您的问题以更正这两个问题。关于你的新问题:

    所以,我只是想知道,有没有更好的方法来创建数组 不知道如何创建数组变量

    听起来您似乎并不真正理解数组变量是什么:数组是一种数据结构,允许您存储由索引选择的数据项。为什么您认为需要一个数组来实现这个“金字塔”功能

    另外,您的代码可以使用
    +=
    +
    进行改进:

    • a=a+b
      可以缩写为
      a+=b
    • a=a+1
      可以缩写为
      a++
    您的第一个磅符号(金字塔尖)的间距应为金字塔底部长度的一半。因此,如果你的底部有10个符号长,那么金字塔的顶部应该间隔4个空格,然后打印符号

    第二,要制作一个真正的金字塔,你需要从上到下打印,这样你的第二行就会逐渐变大。用奇数思考:

    // Example
    Tip: 1 char
    2nd row: 3 chars 
    3rd row: 5 chars
    4th row: 7 chars
    5th row: 9 chars
    6th row: 11 chars
    

    你的换行符错了。它应该是
    \n
    。如果打印为HTML,则使用


    或者,您可以使用
    console.log
    打印字符。

    这是另一种方法:

    <script>
    string = ""; height = 10;
    for(i = 1; i <= height; i++){
        string += Array(i).join('#') + '<br>';
    }
    document.write(string);
    </script>
    

    现在再做一些修改:

    <script>
    string = ""; height = 10;
    for(i = 1; i <= height; i++){
        string += Array(height-i+1).join('&nbsp;') + Array(2*i).join('#') + '<br>';
    }
    document.write(string);
    </script>
    <style>body{font-family:monospace;}</style>
    

    您可以使用
    document.write()
    并将
    “/n”
    替换为
    “\n”
    换行符是反斜杠-n,而不是斜杠-nI“不需要数组”。我只是好奇它们是什么,它们是如何工作的,等等。我想知道我做的是不是一个数组。显然不是……数组更有用,因为你可以从中减去。如果我想创建一个等腰三角形,而不是直角三角形,我想从一堆空格开始,然后每次减少1个空格。要做到这一点而不在每行上写空格,我需要某种字符串减法函数。所以,数组太棒了。听起来你还是不知道数组是什么。您正在谈论的字符串操作类型不需要数组,JavaScript确实有几个字符串函数来提取字符串的一部分(例如,
    substr()
    ),我对您正在使用的这本书不太熟悉,但它可能有关于数组的一章,所以我建议您阅读。好主意。谢谢,nnnnnn。很酷的名字。有附加函数吗?有字符串乘法函数吗?我听说这东西不是内置的。真的,我想一系列与字符串有关的函数是最好的。我将尝试一种使用切片的方法。不幸的是,它们没有任何内置的字符串乘法。我必须为此编写自己的函数。我也注意到了这一点,不久之后。谢谢你,乔纳森,谢谢你的编辑。另一个练习。Console.log在我的解释器中不起作用。您好
    千里ちゃん我很抱歉。你已经有了好几个正确的答案,所以我只想添加另一种方法来实现它。酷。嘿,我喜欢有空格的三角形。谢谢对不起,我不太懂数组。试图弄清楚它们在后端是如何工作的。
    Array(10).join(“#”)
    基本上等同于
    stru repeat(“#”,9)
    在php中,它是一种将字符重复多次的方法。不管怎样,甘巴里!啊,还有一件事,当你查看你提到的那本书的网站()时,如果你看右下角
    <script>
    string = ""; height = 10;
    for(i = 1; i <= height; i++){
        string += Array(height-i+1).join('&nbsp;') + Array(2*i).join('#') + '<br>';
    }
    document.write(string);
    </script>
    <style>body{font-family:monospace;}</style>
    
             #
            ###
           #####
          #######
         #########
        ###########
       #############
      ###############
     #################
    ###################