简介
在这个实验中,我们将探索一个名为 formatDuration 的函数,它可以帮助我们将给定的毫秒数转换为人类可读的格式。我们将学习如何使用数学运算来提取天数、小时数、分钟数、秒数和毫秒数的适当值。我们还将使用各种数组方法,如 filter、map 和 join,来创建一个以用户友好的方式显示持续时间的字符串。在本实验结束时,你将对如何在 JavaScript 中处理和格式化与时间相关的数据有更深入的理解。
这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 100%。获得了学习者 100% 的好评率。
格式化持续时间
要获取给定毫秒数的人类可读格式,请执行以下步骤:
- 打开终端/SSH 并输入
node以开始练习编码。 - 将
ms除以适当的值,以获得天、小时、分钟、秒和毫秒的适当值。 - 将
Object.entries()与Array.prototype.filter()一起使用,仅保留非零值。 - 使用
Array.prototype.map()为每个值创建字符串,并适当地使用复数形式。 - 使用
Array.prototype.join()将这些值组合成一个字符串。
以下是代码:
const formatDuration = (ms) => {
if (ms < 0) ms = -ms;
const time = {
day: Math.floor(ms / 86400000),
hour: Math.floor(ms / 3600000) % 24,
minute: Math.floor(ms / 60000) % 60,
second: Math.floor(ms / 1000) % 60,
millisecond: Math.floor(ms) % 1000
};
return Object.entries(time)
.filter((val) => val[1] !== 0)
.map(([key, val]) => `${val} ${key}${val !== 1 ? "s" : ""}`)
.join(", ");
};
以下是一些示例:
formatDuration(1001); // '1 秒,1 毫秒'
formatDuration(34325055574);
// '397 天,6 小时,44 分钟,15 秒,574 毫秒'
总结
恭喜你!你已经完成了“格式化持续时间”实验。你可以在 LabEx 中练习更多实验来提升你的技能。