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

时间:2018-11-11 21:41:44

标签: javascript algorithm graph

我目前有这个,它在左侧反复输出一个条形图。

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 += "| |";。这样会在正确的位置添加正确的|,但是会在其后移动所有其他字符。

因此,我的问题是我该如何解决?有没有可以遵循的算法来确保它不会移过来?

1 个答案:

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

那呢?它只是在条件中硬编码。