Javascript 阵列在幕后是如何工作的?
我想,我正在尝试使用基本运算符在JavaScript中创建自己的自定义数组 我正在读的这本书《雄辩的JavaScript》,在第1章中有一个练习,要求我使用“print”函数制作一个金字塔。我的任何解释器都没有打印功能,也没有说明如何制作打印功能。所以,我没有打印功能,我使用的是提醒 这是密码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
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);
以下代码应该可以工作:
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
符号=…
,而不是符号=…
编辑:好的,您已经更新了您的问题以更正这两个问题。关于你的新问题:
所以,我只是想知道,有没有更好的方法来创建数组
不知道如何创建数组变量
听起来您似乎并不真正理解数组变量是什么:数组是一种数据结构,允许您存储由索引选择的数据项。为什么您认为需要一个数组来实现这个“金字塔”功能
另外,您的代码可以使用+=
和+
进行改进:
可以缩写为a=a+b
a+=b代码>
可以缩写为a=a+1
a++代码>
// 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(' ') + 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(' ') + Array(2*i).join('#') + '<br>';
}
document.write(string);
</script>
<style>body{font-family:monospace;}</style>
#
###
#####
#######
#########
###########
#############
###############
#################
###################