Javascript 如何使用js数量转换为最佳前缀?

Javascript 如何使用js数量转换为最佳前缀?,javascript,node.js,Javascript,Node.js,我有一个'1200000 mm'的值,我不想有一个自动转换为最佳前缀的方法,如: import Qty from 'js-quantities' const qty = new Qty(1200000, 'mm').toBest() // now set to 1.2, 'km' same as doing to('km') directly 这有可能吗 或者,我如何获得给定单元的带前缀的有序单元列表,以便自己进行操作?下面是一个递归过程的小示例,其中单元映射除以1000,直到达到最优值

我有一个'1200000 mm'的值,我不想有一个自动转换为最佳前缀的方法,如:

import Qty from 'js-quantities'

const qty = new Qty(1200000, 'mm').toBest()
// now set to 1.2, 'km' same as doing to('km') directly
这有可能吗


或者,我如何获得给定单元的带前缀的有序单元列表,以便自己进行操作?

下面是一个递归过程的小示例,其中单元映射除以1000,直到达到最优值

待测试函数(数值,单位){
常数映射={
“mm”:“m”,
“m”:“km”,
“公里”:“公里”
};
让递归=假;
设nextUnit=单位;
如果((num/1000)>=1){
num=(num/1000);
nextUnit=地图[单位];
递归=真;
}
if(递归){
返回测试(num,nextUnit)
}否则{
返回num+“”+单位;
}
}
控制台日志(toBest(1000,“mm”);
控制台日志(toBest(10000000,“mm”);
控制台日志(toBest(47243278423,“m”);
控制台日志(toBest(1000000,“mm”);
控制台日志(toBest(9999999,“毫米”);

控制台日志(toBest(2,“mm”)我做了进一步的研究,找到了另一个更好的库。因此,我将s-数量
convert units`进行了对比,这很有效,但支持的单位较少(目前)。但是定义文件的结构更好,我以后可能会添加一些单元

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'

有关此库的更多信息,请参见

“最佳”当然是主观的,但您可以逐步遍历度量前缀,每次除以1000,直到得到您喜欢的格式。最有可能的是递归调用until
quantity/1000
<1,但是你必须创建一个对象映射来保持单位,但是我怎样才能得到任何单位的可能前缀列表呢。和仪表一样,仪表也应支持厘米,厘米有时可能是最好的,最好是一个小值>1。