迭代填充视觉条形图右侧的算法



我目前有这个,它在左侧迭代输出条形图。

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((语句下添加这个CCD_ 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--;
}

这个怎么样?它只是硬编码的条件。

最新更新