gpt4 book ai didi

javascript - array.split 创建一个包含多个空格的字符串

转载 作者:行者123 更新时间:2023-12-03 02:55:48 25 4
gpt4 key购买 nike

我正在尝试创建几个仅包含不同数量的空格的字符串。我已经能够使用 array.(indexs).join(""); 执行此操作一次;

但是,当我进入循环添加更多字符串且每个字符串中的空白量不断增加时,该字符串将设置为“未定义”。我不确定我哪里出错了。该函数似乎在循环之外工作,但在循环内部却不起作用。有什么想法我做错了什么吗?

function towerBuilder(nFloors) {
// build here
var towers = [];
var stars = "*";
var spaceNo = nFloors -1;
let spaces = Array(spaceNo).join(" ");
spaceNo -= 1;
towers[0] = spaces + stars + spaces;
for(i = 1; i <= nFloors -1; i++)
{
stars = stars + Array(i + 2).join('*');
let edges = Array(spaceNo).join(" ");
towers[i] = edges + stars + edges;
spaceNo -= 1;
}


return towers;
}
console.log(towerBuilder(3));

在顶部,这是有效的:

 let spaces = Array(spaceNo).join(" ");

但是,在循环中,输出“未定义”

let edges = Array(spaceNo).join(" ");

这个想法是空间包裹星形符号,以便可以用数组 build 一座塔。例如,调用 towerBuilder(3) 将输出以下内容:(我不需要用回车符输出它。仅数组就足够了。)

[
' * ',
' *** ',
'*****'
]

最佳答案

Array.join 用于连接数组的所有值,并在它们之间使用给定的字符串:

['foo','bar'].join(',')//= 'foo,bar'

您期望 Array(2).join(' ') 为两个空格,但实际上它只是一个空格,因为它将两个空值连接在一起,中间有一个空格。

只需删除第 5 行的 -1 即可按预期工作:

function towerBuilder(nFloors) {
// build here
var towers = [];
var stars = "*";
var spaceNo = nFloors; // was nFloors - 1
let spaces = Array(spaceNo).join(" ");
spaceNo -= 1;
towers[0] = spaces + stars + spaces;
for(i = 1; i <= nFloors -1; i++)
{
stars = stars + Array(i + 2).join('*');
let edges = Array(spaceNo).join(" ");
towers[i] = edges + stars + edges;
spaceNo -= 1;
}


return towers;
}
console.log(towerBuilder(3));

顺便说一句,如果这样写看起来会好很多:

function towerBuilder(nFloors) {
// build here
var towers = [];

for(var floor = 0; floor < nFloors; floor++)
{
var nStars = (floor * 2) + 1;
var stars = Array(nStars + 1).join('*');
var edges = Array(nFloors - floor).join(" ");
towers[floor] = edges + stars + edges;
}

return towers;
}
console.log(towerBuilder(3));

关于javascript - array.split 创建一个包含多个空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47629669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com