我目前有这个,它在左侧反复输出一个条形图。
const arr = [6,10,4,5,1];
let c = 10;
let r;
for (let i = 0; i < 11; i++) {
r = "";
r += "| ";
for (let k = 0; k < arr.length; k++) {
if (arr[k] == c) r += " __";
else if (arr[k] < c) r += " ";
else r += "| ";
}
console.log(r);
c--;
}
我想对此进行修改,以便它也可以输出条形图的右手
| __
| | |
| | |
| | |
| __| |
| | | | __
| | | |__| |
| | | | | |
| | | | | |
| | | | | |__
| | | | | | |
因此,我尝试将其添加到第一个if()语句下
else if (k < arr.length - 1 && arr[k + 1] < c && arr[k] > c) r += "| |";
。这样会在正确的位置添加正确的|
,但是会在其后移动所有其他字符。
因此,我的问题是我该如何解决?有没有可以遵循的算法来确保它不会移过来?
答案 0 :(得分:1)
const arr = [6,10,4,5,1, -1];
let c = 10;
let r;
for (let i = 0; i < 11; i++) {
r = "";
r += "| ";
for (let k = 0; k < arr.length; k++) {
if(k > 0 && arr[k-1] > arr[k] && arr[k] == c) r += "|__";
else if (arr[k] == c) r += " __";
else if(k > 0 && arr[k-1] > arr[k] && arr[k-1] > c) r += "| ";
else if (arr[k] < c) r += " ";
else r += "| ";
}
console.log(r);
c--;
}
那呢?它只是在条件中硬编码。