Javascript 参数归一化
今天小编刷视频看到一种对参数进行统一归化的案例,觉得不错记录一下
效果如上,传递三个参数,第一个时间,第二个选择的格式,第三个是否补充0。
具体做法如下
先创建一个辅助函数来判断格式
function _formatNormailze (formatter) {
if (typeof formatter === 'function') {
return formatter
}
if (typeof formatter !== 'string') {
throw new TypeError('formatter is not string')
}
if (formatter === 'date') {
formatter = 'yyyy-MM-dd'
}
if (formatter == 'datetime') {
formatter = "yyyy-MM-dd HH:mm:ss"
}
const formatterFunc = (dateInfo) => {
console.log()
const { yyyy, MM, dd, HH, mm, ss, ms } = dateInfo
formatter = formatter.replace("yyyy", yyyy)
.replaceAll("MM", MM)
.replaceAll("dd", dd)
.replace("HH", HH)
.replace("mm", mm)
.replace("ss", ss)
.replace("ms", ms)
return formatter
}
return formatterFunc
}
然后在函数里面调用辅助函数
之后创建有个dateInfo对象来存储时间
下一步来写个辅助函数来给时间填补0
最后把dateInfo传到新函数里,用有个变量来接收,再return回去。
完整代码如下
function formate (date, formatter, isPad) {
formatter = _formatNormailze(formatter)
const dateInfo = {
yyyy: date.getFullYear().toString(),
MM: (date.getMonth() + 1).toString(),
dd: date.getDate().toString(),
HH: date.getHours().toString(),
mm: date.getMinutes().toString(),
ss: date.getSeconds().toString(),
ms: date.getMilliseconds().toString()
}
function _pad (prop, len) {
dateInfo[prop] = dateInfo[prop].padStart(len, '0')
}
if (isPad) {
_pad('yyyy', 4)
_pad('MM', 2)
_pad('dd', 2)
_pad('HH', 2)
_pad('mm', 2)
_pad('ss', 2)
_pad('ms', 3)
}
const result = formatter(dateInfo)
console.log(result)
return result
}
CSDN-Ada助手: 恭喜您写了第15篇博客,标题为“实现展示组件和容器组件”!持续创作是非常了不起的事情,您的努力让我们能够学到更多知识。在下一步的创作中,我建议您可以深入探讨展示组件和容器组件的区别与联系,或者分享一些实际应用的案例分析,这样可以让读者更好地理解和运用这些概念。期待您更多优质内容的分享,加油!
CSDN-Ada助手: 恭喜您写了第14篇博客!标题中提到了解决微信小程序vant-indexBar无反应的问题,我对您分享这样的解决方法感到非常高兴。您的经验和知识分享对于其他开发者来说一定非常有价值。希望您能继续保持创作,并分享更多关于微信小程序开发的实用技巧和经验。如果可以的话,我建议您在下一篇博客中可以探讨一下微信小程序的性能优化或者与其他流行框架的对比,这些话题对于开发者来说都是非常有吸引力的。再次恭喜您,期待您的下一篇博客!
CSDN-Ada助手: 恭喜您写了第13篇博客!看到您总结了Android Studio的问题,我非常欣喜。持续创作对于提升自己的技术水平和帮助他人都至关重要。在下一步的创作中,我建议您可以进一步拓展博客内容,比如分享一些解决这些问题的技巧和经验,或者介绍一些其他常见的开发工具。谦虚地说,我相信您的经验和知识一定会对更多人有所帮助。期待您的下一篇博客!
CSDN-Ada助手: 恭喜您写了第12篇博客!标题为“MySQL修改密码”,非常实用的主题呢。您的博客内容一直给读者带来很多帮助,真的很感谢您的持续创作。如果可以的话,我希望您能够继续分享与MySQL相关的内容,比如如何备份数据库或者如何优化查询性能等等。这些话题对于我们这些在MySQL中摸索的读者来说,肯定会非常有帮助。谢谢您的辛勤工作,期待您的下一篇博客!
CSDN-Ada助手: 恭喜您写下了第9篇博客!标题中的"unplugin-auto-import"听起来非常有趣和实用。通过这个工具,我相信您能够自动导入模块,从而提高开发效率。您的创作一直给我们带来了很多有价值的知识和工具,感谢您的辛勤努力。 如果我可以提出一个谦虚的建议的话,希望您能够在下一篇博客中进一步探讨这个工具的使用场景和实际应用案例。这样的话,读者们可以更好地理解并应用这个工具。期待您的下一篇博客,继续为我们带来更多有趣的内容!