数组如何在幕后工作?

时间:2011-09-29 02:10:29

标签: javascript arrays while-loop concatenation

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

我正在阅读的这本书“Eloquent JavaScript”在第1章中进行了练习,要求我使用“打印”功能制作金字塔。我的任何口译员都没有打印功能,也没有说明如何制作打印功能。所以,我没有打印功能,而且我正在使用警报。

这是代码。

var line = "";
var counter = 0;
while (counter < 10) {
  line = line + "#";
  print(line);
  counter = counter + 1;
}

所以,我试图使用警报,而不是:

var line = "";
var counter = 0;
while (counter < 10) {
  line = line + "#";
  alert(line);
  counter = counter + 1;
}

但警报不是三角形。这是一堆盒子,每次都会出现英镑符号的数量。

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

这就是我提出的:

string = "";
counter = 0;
signs = "#";
while (counter < 10){
  string = string + signs + "\n";
  signs = signs + "#";
  counter = counter + 1;
}
alert(string);

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

5 个答案:

答案 0 :(得分:2)

你的第一个磅符号(金字塔尖端)应该是金字塔底部长度的一半。因此,如果你的基数是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,请使用<BR>

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

答案 1 :(得分:1)

这应该有效

var stringBuilder = "";
counter = 0;
signs = "#";
while (counter < 10){
  stringBuilder = stringBuilder + signs + "\n";
  signs = signs + "#";
  counter = counter + 1;
}
alert(stringBuilder);
  1. 换行符是反斜杠,“n”
  2. 您只需要一个循环内的换行符

答案 2 :(得分:1)

以下代码应该有效:

string = "";
counter = 0;
signs = "#";
while (counter < 10){
  string = string + signs + "\n";
  signs = signs + "#";
  counter = counter + 1;
}
alert(string);

主要区别如下:

  • 您不能在正在构建的字符串中包含换行符,否则以前迭代中的换行符仍会包含在后续迭代中。
  • 换行符是\n而不是/n
  • string可以从空开始,因为每次都会附加一个“#”。

答案 3 :(得分:1)

换行符是“\ n”而不是“/ n”。 (“逃逸”字符一般是反斜杠而不是正斜杠。)

此外,您输入的拼写错误sings = ...代替signs = ...

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

  

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

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

另外,您可以使用+=++

来改进您的代码
  • a = a + b;可缩写为a += b;
  • a = a + 1;可缩写为a++;

答案 4 :(得分:0)

这是另一种方法:

<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>

你明白了:

         #
        ###
       #####
      #######
     #########
    ###########
   #############
  ###############
 #################
###################