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

手写一些方法

模拟new方法

function Otaku(name,age) {this.name = name;this.age = age;   this.habit = 'Games'}Otaku.prototype.strength = 60;Otaku.prototype.sayName = function () {console.log("I am " + this.name);};function myNew(fn, ...args) {const obj = Object.create(fn.prototype);const ret = fn.apply(obj, args); // ret有可能为nullreturn typeof ret === "object" ? ret || obj : obj;}const person = myNew(Otaku,'甲',20);console.log(person,'person');

数组去重

  // 数组去重// 使用new set // const uniqueArr = [...new Set(arr)];// const uniqueArr1 = Array.from(new Set(arr));// 使用reducefunction unique(arr) {// 先排序,如果重复,则上一个下标的内容一样let sortArr = arr.sort()return sortArr.reduce((acc, current) => {if (acc[acc.length - 1] !== current) {acc.push(current);}return acc;}, [sortArr[0]]);}// let arr = [1,2,3,3,4,5,5]// let newArr = unique(arr);// console.log(newArr,'newArr');// 使用filterfunction unique1(arr) {return arr.filter((element, index, array) => {return array.indexOf(element) == index;});}

扁平化数组

// 使用reduce扁平化数组const flattenArr = (arr) => {return Array.isArray(arr) ? arr.reduce((prev,current) => {return [...prev,...flattenArr(current)]},[]) : [arr];}const newArr = flattenArr([[1,1],[2,3],12,32,[90]]);console.log(newArr); // [1, 1, 2, 3, 12, 32, 90]
http://www.lryc.cn/news/482492.html

相关文章:

  • 仅需三步!用AI工具免费打造10w+抖音爆款烟火秀视频教程
  • 基于redis实现API接口访问次数限制
  • [ Linux 命令基础 3 ] Linux 命令详解-文件和目录管理命令
  • npm i 的时候报错: npm ERR! Error: EPERM: operation not permitted, rename
  • 如何迁移剪映源文件
  • Go语言中的`io.Copy`函数:高效的数据复制解决方案
  • datastage在升级版本到11.7之后,部分在11.3上正常执行的SP报错SQLSTATE = 22007: 本机错误代码 = -180
  • docker——项目部署
  • 设计模式(Unity)——更新中
  • 小程序中引入下载到本地的iconfont字体图标加载不出来问题解决
  • 百度富文本禁止编辑
  • C++开发基础之使用librabbitmq库实现RabbitMQ消息队列通信
  • 头歌网络安全(11.12)
  • 洛谷 P1725 琪露诺(线段树优化dp)
  • 【LeetCode】【算法】19. 删除链表的倒数第N个结点
  • Python爬虫 | 爬取豆瓣电影Top250的数据
  • mac 中python 安装mysqlclient 出现 ld: library ‘ssl‘ not found错误
  • 完全清除:苹果手机照片怎么彻底删除
  • 高德地图多个图片组成标点(自定义点标记内容)
  • 02-1_MVCC版本链清理
  • 探索Python视频处理的瑞士军刀:ffmpeg-python库
  • 进程间通信 - 通道
  • 华为数通HCIA系列第5次考试-【2024-46周-周一】
  • 【Linux】如何通过终端命令查看当前可用网络 WIFI + 设置已配置网络的连接优先级 + 连接/断连网络
  • 华为路由策略配置
  • Debezium日常分享系列之:异步 Debezium 嵌入式引擎
  • leetcode206. Reverse Linked List
  • 【MATLAB源码-第291期】基于matlab的AMI编码解码系统仿真,输出各个节点波形。
  • springboot苍穹外卖实战:十一:复盘总结
  • 基于Python的药房管理系统