如何使用js-quantities转换为最佳前缀?

我有一个'1200000毫米'的价值,我不想有一个方法,自动转移到最好的前缀,如:

import Qty from 'js-quantities' const qty = new Qty(1200000, 'mm').toBest() // now set to 1.2, 'km' same as doing to('km') directly 

这有可能吗?

或者我怎样才能得到具有给定单位的前缀单位的有序列表自己做?

下面是一个recursion过程的小例子,它的单位映射除以1000,直到达到最佳值

 function toBest(num, unit) { const map = { "mm" : "m", "m" : "km", "km" : "km" }; let recurse = false; let nextUnit = unit; if ((num/1000) >= 1) { num = (num / 1000); nextUnit = map[unit]; recurse = true; } if (recurse) { return toBest(num, nextUnit) } else { return num+" "+unit; } } console.log(toBest(1000, "mm")); console.log(toBest(10000000, "mm")); console.log(toBest(47243278423, "m")); console.log(toBest(1000000, "mm")); console.log(toBest(999999, "mm")); console.log(toBest(2, "mm")); 

我做了进一步的研究,发现了另一个更好的图书馆。 所以我改变了against转换单位的数量against这很好用,但支持的单位更less(目前)。 但定义文件结构更好,我可以稍后添加一些单位。

 import convert from 'convert-units' // to check if unit is supported try { convert().from(unit) } catch { ... } // to convert unit const valueInMeter = convert(1200000).from('mm').to('m') // and finally the best unit const best = convert(1200000).from('mm').toBest() // best.val = 1.2 // best.unit = 'km' 

https://github.com/ben-ng/convert-units上查看更多关于这个库的信息