我正在尝试编写一个程序,我想要的是存储1.距离和2.我的数据库中的冷却时间。我从?dist 1.8254,25.212398 2.34235,25.232412
中的用户输入字符串中获取输入。
我有一个nodejs应用程序,它计算距离并将输出打印为The distance is 57.53 Km
。但我也希望显示冷却时间,在这种情况下为60km - < 22 minutes
,因此我的程序输出为The distance is 57.53Km and the cooldown time is 20 minutes
。我说了20分钟,因为60公里是<22分钟,所以1分钟的差异可以接受。
我可以使用简单的if / else来匹配以下条件,但我想将所有距离值(1-1500)与其冷却时间一起存储在db中。如何生成/计算冷却时间?根据给定的场景我可以使用什么公式?
我将使用sqlite作为db。
我想了一会儿,但我似乎无法找到解决方案。如果我错过了为我的帖子标记适当的标签,那么请重新标记它。
请帮忙。提前谢谢。
答案 0 :(得分:0)
您可以为距离和冷却时间之间的所需关系获取一组对象。结构采用具有相同单位的正规化数据,例如 km 的距离和 m (分钟)的时间。
.cards
要查找包含数据的数组元素,Array#find
会返回第一个元素,如果条件为[
{
distance: 1,
cooldown: 1
},
{
distance: 3,
cooldown: 2
},
// ...
{
distance: 1500,
cooldown: 120
}
]
或任何其他truthy值。为防止异常,将对象视为默认值,将其作为logical OR ||
的部分。该对象是必要的,因为true
属性具有以下访问权限。
cooldown
它使用cooldown = (data.find(({ distance: d }) => distance <= d) || {}).cooldown;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ find object
// ^^^^^^^^^^^^^^^ destructuring
// ^^^^^^^^^^^^^ condition
// ^^ default value
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ check result
// ^^^^^^^^ final value
和destructuring assignment新名称{ distance: d }
,因为属性名称已用作函数参数。
d
答案 1 :(得分:0)
我将您的数据放入Excel并创建了一个xy-scatter图。我尝试了几条不同的趋势线,但我认为幂律最合适。协议更贴近;预计在较大距离处冷却时间较长(例如,预测在1500公里处冷却134分钟,比120分钟数据长14分钟)。
cooling time (min) = 1.3962*(distance km)^0.6247
它简单,易于可视化,适用于数据值之间的所有距离。连续功能最好。
JavaScript函数很容易编写:
function getCooldownTimeMinutes(distanceKm) {
return 1.3962*Math.pow(distance, 0.6247);
}
我会留给你添加所有其他有意义的检查: