我目前有这个,它在左侧迭代地输出一个条形图。
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 += "| |";
.这增加了权利 |
在正确的位置,但是它会移动它后面的所有其他字符。
因此,我的问题是我该如何解决这个问题?是否有可遵循的算法来确保它不会转移?
最佳答案
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--;
}
这个呢?它只是在条件中硬编码。
关于javascript - 迭代填充可视条形图右侧的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53253522/