我想从符号“#”输出楼梯。它应该是这样的:
但我所取得的就是:
我该怎样做才能获得正确的输出?
var n = 6;
var rows=[];
var cols=[];
for(i=n-1;i>=0;i--) {
rows=[];
for(j=0;j<n;j++) {
if(j >= i) {
rows[j] = "#";
} else {
rows[j] = "";
}
}
cols.push(rows);
cols.splice(0, cols.length - 1);
console.log(cols.join(","));
}
答案 0 :(得分:1)
将其视为坐标系,遍历y和x并添加所需的符号。
如果你想要双面,请记住用当前的y增加max x。
function ladder(size, dualSided, empty, occupied) {
if (dualSided === void 0) { dualSided = true; }
if (empty === void 0) { empty = " "; }
if (occupied === void 0) { occupied = "▲"; }
var str = "";
for (var y = 0; y < size; y++) {
for (var x = 0; x < size + y; x++) {
if (dualSided != true && x == size) {
break;
}
if (x >= size - y - 1) {
str += occupied;
}
else {
str += empty;
}
}
str += "\n";
}
return str;
}
console.log(ladder(20, false));
答案 1 :(得分:0)
好的,试试这个(最后3行);
cols.push(rows.join(""));
cols.splice(0, cols.length - 1);
console.log(cols.join(""));
问题是你在cols中推送数组(行),其中行数组本身包含逗号。如果您执行 cols.push(rows.join(&#34;&#34;)),则会删除所有逗号。
答案 2 :(得分:0)
使用Array.from的简单解决方案
现场演示检查如下。
function staircase(n) {
let arr = Array.from({ length: n }).fill(0);
arr.map((v,i) => {
let dummyArr = Array.from({ length: i+1 }).fill('#');
let spaceArr = Array.from({ length: arr.length - (i+1) }).fill(' ');
console.log(`${spaceArr.join('')}${dummyArr.join('')}`);
});
}
staircase(6);