js中函数参数的归一化处理

在 JavaScript 中,函数参数的归一化处理是一种将不同类型或格式的参数转换为统一的标准或格式的过程。这样做的目的是为了提高代码的灵活性、可维护性和可重用性。

以下是一些常见的函数参数归一化处理的方式:

  1. 数据类型转换:将不同类型的参数转换为相同的数据类型,例如将字符串转换为数字,或者将对象转换为数组等。
  2. 默认值处理:为参数提供默认值,以便在调用函数时如果未提供该参数,仍然可以使用默认值进行处理。
  3. 参数验证:对传入的参数进行验证,确保它们符合函数的要求或预期的格式。可以检查参数是否为 null、undefined、特定的数据类型、满足一定的条件等。
  4. 参数解构:使用 ES6 中的参数解构来提取和处理参数,使代码更加简洁和易读。
  5. 参数映射或转换:对参数进行映射或转换,将一种格式的参数转换为另一种格式,以便更方便地进行后续处理。
  6. 错误处理:在参数归一化过程中,进行错误检查和处理,抛出异常或返回错误信息,以便在调用函数时能够及时处理错误情况。

通过进行函数参数的归一化处理,可以使函数更加健壮和灵活,能够处理各种不同情况下的参数。这样可以提高代码的可扩展性和可维护性,使函数更易于使用和重用。

下面是一个示例,展示了如何进行函数参数的归一化处理:(以格式化时间为例)

function _formatNormalize(formatter) {if (typeof formatter === "function") {return formatter;}if (typeof formatter !== "string") {throw new TypeError("formatter must be string or function");}if(formatter === 'data') {formatter = 'yyyy-MM-dd'}else if(formatter === 'datatime') {formatter = 'yyyy-MM-dd HH:mm:ss'}return (dataInfo) => {const {yyyy, MM, dd, HH, mm, ss, ms} = dataInforeturn formatter.replace('yyyy', yyyy).replace('MM', MM).replace('dd', dd).replace('HH', HH).replace('mm', mm).replace('ss', ss).replace('ms', ms)}
}/*** 格式化一个日期* @param {*} date 日期对象* @param {*} formatter 格式化参数,或 自定义函数* @param {*} isPad 小于10是否补0*/
function formate(date, formatter, isPad = false) {formatter = _formatNormalize(formatter);const dateInfo = {year: date.getFullYear(),month: date.getMonth() + 1,date: date.getDate(),hours: date.getHours(),minutes: date.getMinutes(),seconds: date.getSeconds(),milliseconds: date.getMilliseconds()}dateInfo.yyyy = isPad ? dateInfo.year.toString().padStart(4, 0) : dateInfo.yeardateInfo.MM = isPad ? dateInfo.month.toString().padStart(2, 0) : dateInfo.monthdateInfo.dd = isPad ? dateInfo.date.toString().padStart(2, 0) : dateInfo.datedateInfo.HH = isPad ? dateInfo.hours.toString().padStart(2, 0) : dateInfo.hoursdateInfo.mm = isPad ? dateInfo.minutes.toString().padStart(2, 0) : dateInfo.minutesdateInfo.ss = isPad ? dateInfo.seconds.toString().padStart(2, 0) : dateInfo.secondsdateInfo.ms = isPad ? dateInfo.milliseconds.toString().padStart(3, 0) : dateInfo.millisecondsreturn formatter(dateInfo)
}// 可调用方式// 2024-2-1
console.log(formate(new Date(), 'data'))// 2024-02-01 11:5:2
console.log(formate(new Date(), 'datatime'));// 2024-02-01
console.log(formate(new Date(), 'data', true))// {
//   year: 2024,
//   month: 3,
//   date: 17,
//   hours: 11,
//   minutes: 39,
//   seconds: 55,
//   milliseconds: 471,
//   yyyy: '2024',
//   MM: '03',
//   dd: '17',
//   HH: '11',
//   mm: '39',
//   ss: '55',
//   ms: '471'
// } info
formate(new Date(), (dateInfo) => {console.log(dateInfo, 'time')
}, true)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考高级,高项和架构哪个更容易?

软考高级共有5个科目,考试难度都是偏大的。相对而言,信息系统项目管理师的考试难度小于系统架构设计师,不过目前高项是1年1考,架构是1年2考,从这个层面来说,通过架构考试的机会要多一些。 架构&高项考…

RabbitMq——direct交换器和fanout交换器 扇形交换器

direct交换器: Configuration 发送 Bean protected Queue queue(){ Queue queue new Queue(“myQueue”) return queue; } amqpTemplate.convertAndSend("myQueue","这是发送的内…

pytorch_fid计算fid

pip install pytorch-fid from pytorch_fid import fid_score# 准备真实数据分布和生成模型的图像数据 real_images_folder xxx generated_images_folder xxx# 计算FID距离值 fid_value fid_score.calculate_fid_given_paths([real_images_folder, generated_images_folder]…

【测试开发】自动化测试 selenium 篇

目录 一. 什么是自动化测试 二. selenium 1. selenium的工作原理 2. seleniumJava的环境搭建(Chrome浏览器) 三. selenium中常用的API 1. 定位元素 findElement 1.1 css选择语法 1.2 xpath 2. 操作测试对象 2.1 sendKeys-在对象上模拟按键输入 2.2 click-点击对象…

mmap访问内存方式

mmap访问内存方式 请看下面的Java代码,这段程序是取自1brc竞赛的第一名的代码。 public static void main(String[] args) throws IOException, InterruptedException {... ...try (var fileChannel FileChannel.open(java.nio.file.Path.of(FILE), java.nio.fil…

elasticsearch8.12 分词器安装

分词器的主要作用将用户输入的一段文本,按照一定逻辑,分析成多个词语的一种工具 分词器下载地址 analysis-ik Releases infinilabs/analysis-ik GitHub 一个简便 安装方式 安装完成之后 会提示重启,重启es即可 ./bin/elasticsearch-pl…

配置LVS NAT模式

配置LVS NAT模式 环境准备 client1:eth0->192.168.88.10,网关192.168.88.5lvs1: eth0 -> 192.168.88.5;eth1->192.168.99.5web1:eth1->192.168.99.100;网关192.168.99.5web2:eth1->192.168…

基于C语言的“贪吃蛇”游戏设计理念

3.功能描述:本游戏主要实现以下几种功能 图1.游戏功能模块 3.1. 贪吃蛇的控制功能:通过各种条件的判断,实现对游戏蛇的左移、右移、下移、上移、自由移动,贪吃蛇的加长功能。 3.2. 游戏显示更新功能:当贪吃蛇左右移动、…

容器只适用于微服务吗?

容器是一种技术,它将应用及其依赖项打包成一个可移植的单元,以便在不同的计算环境中一致地运行。这种技术确实在微服务架构中得到了广泛应用,因为容器可以帮助实现微服务的快速部署、水平扩展和管理。 然而,容器并不仅限于用于微…

操作系统笔记之进程调用API中的getpid、fork、wait、exec补充

操作系统笔记之进程调用API中的getpid、fork、wait、exec补充 code review! —— 杭州 2024-03-17 夜 文章目录 操作系统笔记之进程调用API中的getpid、fork、wait、exec补充1.getpid()2.fork()3.wait()4.exec()5.通常,exec() 调用与 fork() 调用一起使用&#xff…

Leetcode 3080. Mark Elements on Array by Performing Queries

Leetcode 3080. Mark Elements on Array by Performing Queries 1. 解题思路2. 代码实现 题目链接:3080. Mark Elements on Array by Performing Queries 1. 解题思路 这一题我们只需要按照题意进行一下实现就行了。具体来说的话,我们只需要依序遍历一…

算法笔记p154最大公约数和最小公倍数

目录 最大公约数辗转相除法证明例子代码实现 最小公倍数代码实现 最大公约数 正整数a与b的最大公约数是指a与b的所有公约数中最大的那个公约数,一般用gcd(a, b)表示a和b的最大公约数。 辗转相除法 设a、b均为正整数,则gcd(a, b) gcd(b, a % b)。即被…

【C语言_字符函数和字符串函数_复习篇】

目录 一、字符函数 1.1 字符分类函数 1.2 字符转换函数 二、字符串函数 2.1 strlen函数 2.1.1 strlen函数的使用 2.1.2 strlen函数的模拟实现 2.2 strcpy函数 2.2.1 strcpy函数的使用 2.2.2 strcpy函数的模拟实现 2.3 strcat函数 2.3.1 strcat函数的使用 2.3.2 strcat函数的…

hololens2发布unity设置

生成vs工程再向hololens发布时, Architecture选X64或ARM64都可以成功发布

es索引操作命令

索引操作 index 创建索引 put 方法创建索引 使用 put 创建索引时必须指明文档id,否则报错 # PUT 创建命令 # test1 索引名称 # type1 类型名称,默认为_doc,已经被废弃 # 1 文档id PUT /test1/type1/1 {"name":"zhangsan&…

能不能绕过c去学c++?

目前做工程开发,基本都是c/c混着用的,c/c是同源的,c/是在c的基础上发展起来的,它们之间有些联系和区别: 区别: 1.可用库不同 c基本是系统底层语言,一般系统底层开发用c(例如&…

【leetcode】二叉树的前序遍历➕中序遍历➕后序遍历

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1. 二叉树的前序遍历2. 二叉树的中序遍历3. 二叉树的后序遍历 1. 二叉树的前序遍历 点击查看题目 根…

lv17 安防监控项目实战 3

代码目录 框架 our_storage 编译最终生成的目标文件obj 编译生成中间的.o文件 data_global.c 公共资源定义(使用在外extern即可)定义了锁定义了条件变量消息队列id、共享内存id、信号量id及key值发送短信、接收短信的号码向消息队列发送消息的函数&am…

Ollama部署本地大模型

ollama run gemma:2b "菊花为什么是红色的?" 如今 LLM 早已不再等同于昂贵的 GPU,而是可以在大部分消费级计算机上运行推理的应用了——俗称本地大模型。 Ollama 安装十分简单,macOS 直接在官网下载安装包打开运行;Wi…

华为汽车业务迎关键节点,长安深蓝加入HI模式,车BU预计今年扭亏

‍编辑 |HiEV 一年之前,同样是在电动汽车百人会的论坛上,余承东在外界对于华为和AITO的质疑声中,第一次公开阐释了华为选择走智选车模式的逻辑。 一年之后,伴随问界M7改款、问界M9上市,华为智选车模式的面貌已经发生了…