当前位置: 首页 > wzjs >正文

江苏省建设厅网站职称评审系统互联网技术培训机构

江苏省建设厅网站职称评审系统,互联网技术培训机构,wordpress apahce 静态 windows,百度网页游戏大厅lodash的omit函数详解 - 从入门到精通 小白视角:什么是omit? omit在英文中意为"忽略"或"省略"。在编程中,它就是从一个对象中删除不需要的属性,返回一个新对象。 // 原始对象 const person {name: "…

lodash的omit函数详解 - 从入门到精通

小白视角:什么是omit?

omit在英文中意为"忽略"或"省略"。在编程中,它就是从一个对象中删除不需要的属性,返回一个新对象。

// 原始对象
const person = {name: "张三", age: 30, password: "123456"};// 使用omit删除password
const safeInfo = omit(person, ['password']);
// 结果: {name: "张三", age: 30}

初级前端:基本应用场景

1. 表单数据提交

就像当前代码中的用法,提交前去除不需要传给后端的字段:

const params = {...omit(formData.value, ['password2',  // 确认密码字段不需要提交'checkAgreement',  // 只用于前端验证// 其他不需要的字段]),password,  // 加密后的密码secretToken  // 额外添加的字段
};

2. 隐藏敏感信息

const userInfo = omit(userData, ['password', 'idNumber']);

中级前端:更深入的理解

1. 自己实现一个omit

function myOmit(obj, keysToRemove) {// 方法1: 使用解构和过滤return Object.fromEntries(Object.entries(obj).filter(([key]) => !keysToRemove.includes(key)));// 方法2: 使用reduce// return Object.keys(obj).reduce((result, key) => {//   if (!keysToRemove.includes(key)) {//     result[key] = obj[key];//   }//   return result;// }, {});
}

2. 性能考量

针对项目中的注册表单,分析不同方法的优劣:

// 方式1:使用omit (当前代码使用)
const params = {...omit(formData.value, ['password2', 'checkAgreement', /* 其他字段 */]),password,secretToken
};// 方式2:手动解构
const { password2, checkAgreement, smsCode, ...rest } = formData.value;
const params = {...rest,password,secretToken
};// 方式3:手动构造
const params = {operatorName: formData.value.operatorName,operatorId: formData.value.operatorId,// ... 列出所有需要的字段password,secretToken
};

方式1代码最清晰,方式2在字段少时效率最高,方式3最繁琐但最明确。

高级前端:深入源码与最佳实践

1. lodash-es的omit源码精髓

lodash的omit实际上是先通过baseClone创建一个浅拷贝,然后利用内部的basePick函数实现。它处理了大量边界情况,比如属性描述符、Symbol键、原型链等。

2. 树摇优化考量

使用lodash-es而非lodash的好处是支持树摇,只会打包你使用的函数:

// 推荐: 只引入需要的函数
import { omit } from 'lodash-es';// 不推荐: 引入全部
import _ from 'lodash';

3. 高性能场景中的取舍

当处理大型对象或频繁操作时,考虑这些替代方案:

// 1. 使用Object.create保留原型链
function fastOmit(obj, keys) {const result = Object.create(Object.getPrototypeOf(obj));for (const key in obj) {if (!keys.includes(key) && Object.prototype.hasOwnProperty.call(obj, key)) {result[key] = obj[key];}}return result;
}// 2. 使用Map/Set优化查找
function optimizedOmit(obj, keys) {const keysSet = new Set(keys);return Object.fromEntries(Object.entries(obj).filter(([key]) => !keysSet.has(key)));
}

4. TypeScript类型安全版本

function omit<T extends object, K extends keyof T>(obj: T, keys: K[]
): Omit<T, K> {const result = { ...obj };keys.forEach(key => delete result[key]);return result;
}

通过对表单处理这个场景深入思考,omit不仅是一个工具函数,更体现了函数式编程中数据不可变性的思想,以及前端开发中数据转换和适配的核心理念。

http://www.dtcms.com/wzjs/534133.html

相关文章:

  • 西安做网站公司报价可上传多个视频的网站建设
  • 哈尔滨市建设工程交易中心网站php网站开发背景
  • 网站建设扌金手指六六seo外链优化策略
  • 佛山外贸网站建设行情广州网站备案拍照
  • 商标可以做网站吗靖宇东兴自助建站
  • 中山网站制作系统wordpress建站seo
  • 国外免费注册域名的网站建立网站需要哪些东西
  • 长春网站建设方案推广crm系统是什么
  • 学校网站开发协议四川网站建设哪家专业
  • 免费的ai素材网站扬中网站优化
  • 中堂做网站椒江设计公司
  • 网站设计公司网页设计没有备案的网站怎么访问
  • 企业网站源码安装教程网站建设后端前端
  • 公司想制作网站吗淘宝客网站推广怎么做
  • 网站建设宝典长沙多用户商城网站建设
  • 网站模板是怎么制作昆明做网站做的好的公司有哪些
  • 网站开发文件上传到服务器颖灵信息科技网站建设
  • 中国做的网站国外能打开吗十大免费货源网址
  • 官方网站建设哪家公司好软件开发文档规范
  • 网站域名哪看神华集团两学一做网站
  • flash建网站教程网站 空间 服务器 免费
  • 做网站有地区差异吗什么是网络营销评价
  • 企业网站建设设计方案响应式网站建设定制
  • 做图文链接网站米拓cms建站系统
  • 福州网站建设外包学校资源网站建设方案
  • 宿州哪家做网站不做网络传媒公司名字
  • 乐清公司做网站做网站要会哪些软件
  • 资讯网站策划怎么写如何创建目录wordpress
  • 网站没有百度快照wordpress插件下载排行
  • 网页微信版登录长沙官网优化推广