Фактические числа в удобочитаемых значениях

У меня есть данные в байтах. Мне нужно нарисовать эти значения в виде удобочитаемых меток на диаграмме (например, 2,5 КБ, 14 МБ и т. Д.), И мне нужно помочь с функцией (входные данные - фактическое значение, выход - удобочитаемая строка).

Я выполнил такую ​​функцию , но мне нужна более элегантная реализация

function tickFormatter(value, type) {

    var suffix = (type == "bytes") ? ['B', 'KB', 'MB', 'GB'] : ['', 'K', 'M', 'G']

    if(value > (1024 * 1024 * 1024 * 1024)) {
        return (value / (1024 * 1024 * 1024 * 1024)).toFixed(2) + suffix[3]
    } else if(value > (1024 * 1024 * 1024)) {
        return (value / (1024 * 1024 * 1024)).toFixed(2) + suffix[2]
    } else if (value > (1024 * 1024)) {
        return (value / (1024 * 1024)).toFixed(2) + suffix[1]
    } else {
        return value.toFixed(2) + suffix[0]
    }
}
9
задан VeroLom 21 December 2010 в 12:09
поделиться