从符号创建楼梯

时间:2017-04-20 11:16:49

标签: javascript

我想从符号“#”输出楼梯。它应该是这样的:

enter image description here

但我所取得的就是:

enter image description here

我该怎样做才能获得正确的输出?

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(","));
}

3 个答案:

答案 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);