【JavaScript】各种常见手写题汇总复习

JavaScript 复习笔记(巩固学习JavaScript一篇就够)JavaScript基础快速入门 Javascript复习笔记 最近找了一些教程重新学习(复习) JavaScript,顺道将学习内容整理成笔记,巩固所学知识,同时也参考一些博客,书籍上的内容,查漏补缺,给自己充充电???????? 工欲善其事,必先利其器,为了提高开发效率,前端开发首选:VSCode(Visual Studio Code)。 初识JavaScript **「创始人」**布兰登·艾奇(Brendan Eich),起初命名为LiveScript后来Sun公司收购并改名为JavaScript。 **「JavaScript」* 阅读详情

防抖

function throttle(fun, time) {
  let timer = null
  return () => {
    if (timer) {
      return
    }
    fun()
    timer = setTimeout(() => {
      timer = null
    }, time)
  }
}

节流

function debounce(fun, time) {
  let timer = null
  return () => {
    if (timer) {
      clearTimeout(timer)
    }
    timer = setTimeout(() => {
      fun()
    }, time)
  }
}

深拷贝

function deepClone(a, cache) {
  let res = undefined

  if (!cache) {
    cache = new Map()
  }

  if (a instanceof Object) {
    if (cache.get(a)) {
      return cache.get(a)
    }

    if (a instanceof Function) {
      if (a.prototype) {
        res = (...args) => {
          return a.call(this, ...args)
        }
      } else {
        res = (...args) => {
          return a.call(undefined, ...args)
        }
      }
    } else if (a instanceof Array) {
      res = []
    } else if (a instanceof Date) {
      res = new Date(a - 0)
    } else if (a instanceof RegExp) {
      res = new RegExp(a)
    } else {
      res = {}
    }

    cache.set(a, res)

    for (let k in a) {
      if (a.hasOwonProperty(k)) {
        res[k] = deepClone(a[k])
      }
    }

    return res
  } else {
    res = a
  }
}

手写 instanceof

function _instanceof(a, b) {
  if (typeof a !== 'object' || a === null) {
    return false
  }

  let proto = Object.getPrototypeOf(a)
  while (true) {
    if (proto === null) {
      return false
    }
    if (proto === b.prototype) {
      return true
    }
    proto = Object.getPrototypeOf(proto)
  }
}

手写 new

function _new(fn, ...args) {
  let o = Object.create(fn.prototype)
  let res = fn.apply(o, args)
  return typeof res === 'object' ? res : o
}

数组去重

// 当前项和剩余项比较
function listDoWeight(arr) {
  let res = []
  for (let i = 0; i < arr.length; i++) {
    let c = arr[i]
    let o = arr.slice(i + 1)
    if (o.indexOf(c) === -1) {
      res.push(c)
    }
  }
  return res
}

// 先排序,再遍历及相邻元素对比去重
function listDoWeight(arr) {
  arr.sort((a, b) => a - b)
  let res = [arr[0]]
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] !== arr[i - 1]) {
      res.push(arr[i])
    }
  }
  return res
}

// set
function listDoWeight(arr) {
  return Array.from(new Set(arr))
}

// map
function listDoWeight(arr) {
  const map = new Map()

  for (let i = 0; i < arr.length; i++) {
    let temp = arr[i]
    if (!temp) {
      continue
    }
    if (map.has(temp)) {
      continue
    }
    map.set(temp, true)
  }
  return [...map.keys]
}

数组扁平化

let arr = [1, [2, [3, [4, 5]]], 6]
let res
// flat 方法
res = arr.flat(arr)

// 递归
function f1(arr) {
  let res = []
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      res = res.concat(flatFun(arr[i]))
    } else {
      res.push(arr[i])
    }
  }
  return res
}

// reduce 迭代
function f2(arr) {
  return arr.reduce((prev, next) => {
    return prev.concat(Array.isArray(next) ? f2(next) : next)
  }, [])
}

// 扩展运算符
function f3(arr) {
  while (arr.some((i) => Array.isArray(i))) {
    arr = [].concat(...arr)
  }
  return arr
}
JS高级-手写apply、call、bind以及认识arguments 阅读详情

相关推荐

offer收割机最新整理的JavaScript手写题

【代码】offer收割机最新整理的JavaScript手写题。

panerchao的博客 1126

2022前端面试遇到的手写题总结

百度前端一面常考手写面试题及答案

helloworld1024fd的博客 192

JavaScript|免费导入题库,考试复习工具,刷题神器,支持导入excel题库【完全免费+提供源码】

JavaScript|免费导入题库,考试复习工具,刷题神器,支持导入excel题库【完全免费+提供源码】。然后找了半天不是运行不了就是要收费之类的,总是找不到简单可用的,于是自己就想想能不能用javascript自己写一个,然后就东拼西凑一些网上的可用代码自己写了个小工具,实现了用javascript读取EXCEL表的题库,然后实现自动出题复习并算分,不过由于需要用到IE的EXCEL AX控件,所以只能用IE内核的浏览器使用。现在分享给遇到同样问题的朋友们,代码写的一般般,有兴趣童鞋的可以改改丰富一下功能。

神奇代码在哪里 1万+

【JavaScript】JS高频手写汇总

基本上面试的时候,经常会遇到手撕XXX之类的问题,这次准备梳理总结一遍,巩固我们原生JS基础的同时,下次想复习面试手撕题的时候,找起来方便,也节省时间。事件委托这里就不阐述了,比如给li绑定点击事件看错误版,(容易过的,看**「面试官水平了」**)👇 **「有个小bug,如果用户点击的是 li 里面的 span,就没法触发 fn,这显然不对」**👇 这样子的场景就是不对的,那我们看看高级版本👇 codepen效果地址:https://codepen.io/zhangchenxus/pen/mdXorg...

ColdCoder的博客 1666

使用 Ansys Q3D 进行电容提取

精确的电容提取在高速和 RF 设计中至关重要。在本博客中,我们演示了如何使用Ansys Q3D Extractor来计算电容值,从基本的平行板电容器开始,然后转到MEMS芯片的切口,以检查焊盘和RF线对整体电容的影响。在下面的比较中,我们使用 Q3D 从 MEMS 芯片切口中提取两种配置的电容矩阵:一种仅带有焊盘,另一种带有连接到 RF 线路的焊盘。这种比较表明,焊盘是总电容的主要贡献者,而 RF 线路则略有增加。按照上述工作流程,提取焊盘的电容,得到的电容矩阵如下所示。,选择一个已识别的网络,然后单击。

jkh920184196的博客 1811

变邻域搜索(VNS)原理梳理和应用细节-附求解VRPTW问题C++代码

文章目录1、简介-introduction2、VNS的基本机制2.1 变邻域下降方法-Variable Neighborhood Descent2.2基本变邻域搜索方法-Basic Variable Neighborhood Search2.3 终止准则3、VNS的拓展和混杂算法3.1 VNS的拓展3.2 变邻域分解搜索-Variable Neighborhood Decomposition Search3.3 偏变邻域搜索-Skewed VNS3.4 并行变邻域搜索-Parallel VNS4、VNS和其

dragon Fly的博客 6826

史上最全!56个JavaScript的「手写」知识点,扫盲啦!

关注公众号前端开发博客,领27本电子书回复加群,自助秒进前端群今天就带着大家来复习一下JavaScript的56个「手写」知识点哦~~~大厂手写题1、实现原生 AJAX 封装constajax={ get(url,fn){ constxhr=newXMLHttpRequest() xhr.open('GET',url,true)...

前端开发博客 1万+

TC3XX - MCAL知识点(二十):CAN MCAL配置及代码实战(CAN/CANFD/extenen CAN)

CAN驱动程序负责提供AUTOSAR指定的标准CAN通信服务。M_CAN单元是底层的CAN硬件单元,它由共享消息RAM(在AUTOSAR中称为硬件对象)的节点(在AUTOSAR中称为控制器)组成。CAN驱动提供以下服务:·初始化CAN控制器以控制CAN控制器的行为和状态·设置和修改CAN控制器的波特率配置·支持CAN和CAN FD帧的收发·在轮询和中断模式下,成功的帧传输通知,专用和FIFO消息的接收和总线事件通知·数据接收使用接收FIFO功能·假装网络模式处理·支持多读/写周期功能。

梦想技术家 3938

反复刷这些javascript面试手写题,我感觉我真的变强了(一)

文章目录用正则能实现的手写题实现千分位分隔符实现一个trim()取出连续重复的字符解析url参数为对象形式关于闭包的手写题利用高阶函数实现函数缓存 用正则能实现的手写题 前段时间刚好复习了正则,所以把正则的写前面 实现千分位分隔符 题目描述:实现将一个数从各位数开始,每距离一个千分位添加一个分割符 ‘ ,’ 如输入: 12345678.32423432 输出:12,345,678.32423432 这道题在最近一两个月的面试中遇到两次,可以分别有字符串和数组的一些方法结合解决,也可以用正则解决,我觉得

weixin_43342105的博客 4339

配置 SAP Web Dispatcher 的实战指南:打通 SAP Fiori、SAP Gateway 与前端系统的关键一跳

SAP Web Dispatcher 在 Fiori 架构中扮演关键角色,作为统一入口处理 HTTPS 请求、实现安全代理和流量分发。它将分散在不同系统的访问路径统一收口,解决浏览器同源策略限制,集中管理 HTTPS 终止和客户端信息传递。典型配置中,Web Dispatcher 监听 443 端口,根据路径将 OData 请求转发至 Gateway 系统,静态资源请求送至前端服务器。SSL 相关配置(如 PSE 文件)确保安全通信,而路由规则(wdisp/system_xx)决定请求转发目标。实施时需注意

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 101

YOLOv8改进-利用图像去雾网络UnfogNet提升检测精度的探索【附核心模块代码】

YOLOv8-UnfogNet联合模型的提出为目标检测和图像去雾领域提供了一个新的思路。通过将图像去雾网络和目标检测网络结合,不仅可以提升在恶劣天气下的目标检测精度,还能够为实际应用中的自动驾驶、监控安防等领域带来更强的鲁棒性和适应性。随着去雾技术和目标检测算法的不断发展,我们相信,这种联合方法将在多个领域中获得更加广泛的应用,并为进一步提升图像质量和检测精度做出重要贡献。

一键难忘的博客 3202

JS复习汇总笔记

JS复习笔记

茴香馅饺子~的博客 3345

Raspberry Pi 4 ARM Trusted Firmware 技术解析

摘要: 本文详细介绍了在树莓派4(Raspberry Pi 4)上移植ARM可信固件(TF-A)的实现方案与安全考量。该移植专注于BL31功能,作为非安全世界(如Linux内核)的启动桥梁,支持加载EL2级别程序。文章分析了启动流程、内存映射设计,并对比了RPi3与RPi4的关键差异,指出当前版本缺乏硬件级安全内存保护的局限性。此外,提供了构建指南、配置说明及设备树自动修补的实现细节,强调通过config.txt简单配置即可启动64位内核。该方案充分利用树莓派原有GPU固件流程,兼顾兼容性与简易性。

Linux内核架构师 932

KeymouseGo:3 步把鼠标键盘重复操作交给电脑

KeymouseGo 是一个类似按键精灵的鼠标键盘自动化工具,你做一次操作,它按你设定的次数替你重复做 N 次。适合每天要重复点击、填表、切窗口的办公用户,也适合开发者做 UI 自动化冒烟测试。 ## 🎬 每天 3 次、一个月 60 轮的重复点击 早上 9 点,你打开内网后台,依次点"新建任务""填写日期""提交",再打开第二个系统重复一遍同样的动作。这样的流程一天 3 轮,一个月下来就是

gitblog_00207的博客 755

手把手教您 Claude 桌面端无需账号订阅,免费接入国产自定义大模型(Claude Desktop 绕过订阅限制,接入任意自定义 AI 模型)

无需官方账号,也能畅玩Claude桌面端!本文详解Claude Desktop如何跳过登入接入自定义大模型,轻松解锁Cowork、Code等强大功能🚀

XiaoqiangClub的博客 5409

dToF直方图之美_deadtime死区时间

IMX459的死区时间可以在6ns,这个时间是什么级别,车载激光雷达激光器的光脉宽一般都在4ns以上,也就是这个时间贴近去SPAD的死区时间,这就导致了pile up会非常弱,不会有太多数量的光子计数堆积,加上某些SPAD设计,对TDC有一些更深入的考量,所以不需要去校正pile up算法。Sensor层面决定了pile up的复杂程度,如果一个dToF的SPAD一致性非常好,那么pile up校正可以简单到极致,也就是一句代码的事,比如IMX611,优秀到不需要后端去考虑校正pile up。

致力于lidar应用开发 2147

32个常见的 JavaScript 面试手写代码问题,帮你巩固基础

作为前端开发,js是重中之重,这里总结下32个手写js问题,这些都是高频面试题,希望对你能有所帮助。01、数组扁平化数组扁平化是指将一个多维数组变为一个一维数组const arr = [1...

前端达人 1756

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

前端面试题汇总大全(含答案)-- 持续更新

汇总了一些前端常见的面试题。 一、HTML 篇 1. 简述一下你对 HTML 语义化的理解? 用正确的标签做正确的事情。 html 语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;即使在没有样式 CSS 情况下也以一种文档格式显示,并且是容易阅读的; 搜索引擎的爬虫也依赖于 HTML 标记来确定上下文和各个关键字的权重,利于 SEO; 使阅读源代码的人对网站更容易将网站...

张兴华的博客 19万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

javascript期末复习题

一、单项选择题 1、HTML表格标签是( B ) A、<form> B、<table> C、<img> D、<select> 2、HTML表格中的行标签是( B ) A 、<a> B、<tr> C、&lt...

qq_41827511的博客 8426

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

复习JS 手写题

数据类型判断 typeof 可以正确识别:Undefined、Boolean、Number、String、Symbol、Function 等类型的数据,但是对于其他的都会认为是 object,比如 Null、Date 等,所以通过 typeof 来判断数据类型会不准确。但是可以使用 Object.prototype.toString 实现。 functiontypeOf(obj){ letres=Object.prototype.toString.call(obj).split('...

那一日面朝大海的博客 243

2024前端面试之JavaScript手写题(二)

console.log(arr.flat(Infinity))//flat参数为指定要提取嵌套数组的结构深度,默认值为 1。// 触发callback,触发后删除js标签和绑定在window上的callback。//obj为Object,相当于new Object()//obj为Array,相当于new Array()// 添加js节点到document上时,开始请求。// 被观察者要提供一个接受观察者的方法。//若参数不够就继续递归返回curry。//若参数够就调用函数返回相应的值。

2401_89161814的博客 743

「2022 最新最全」高频的前端面试题汇总 javascript 手写篇(练完吊打面试官)

发布/订阅模式基于一个主题/事件通道,希望接收通知的对象(称为subscriber)通过自定义事件订阅主题,被激活事件的对象(称为publisher)通过发布主题事件的方式被通知。vue2中的全局事件总线就是使用这种设计模式。/***发布/订阅模式组件*///定义发布/订阅类classPubsub{};}//发布事件publish(topic,args){if(!0;}//订阅事件subscribe(topic,func){if(!...

m0_44950309的博客 616

《JavaScript程序设计》期末复习

《JavaScript程序设计》期末复习

2402_84051608的博客 1743

JavaWEB复习汇总

1.基础JavaWEB复习~基础知识_一只小红帽的博客-优快云博客 2.数据库JavaWEB复习~数据库_一只小红帽的博客-优快云博客 3.JavaScriptJavaWEB复习~JavaScript_一只小红帽的博客-优快云博客 4.XML文件JavaWEB复习~XML文件_一只小红帽的博客-优快云博客 5.服务器基础JavaWEB复习~服务器基础_一只小红帽的博客-优快云博客 6.HTTPJavaWEB复习~HTTP_一只小红帽的博客-优快云博客 7.会话JavaWEB复习~会话

keaimaomao1234的博客 1232

JS题库复习(JavaScript标记版)

p>

爱吃Java的羊的博客 986

javascript以及vue.js复习

htmlDOM(文档对象模型):当浏览器网页加载时,浏览器会创建页面的文档对象模型(Document Object Model),用来将标记性文档封装成对象,并将标记性文档中的所有内容(标签、文本、属性等)都封装成对象,封装成对象的目的是为了更方便的操作这些文档以及文档中的所有内容。在html中,按照从上到下,从左到右,在执行过程中遇到script时,浏览器停止HTML解析并开始执行JavaScript代码,如果script的内容引用了后面的内容,他将不会显示相关内容。变量在函数外定义,即为全局变量。

weixin_59218884的博客 927
上一篇: 【HTML】响应式邮箱(HTML Email)编写 mjml
下一篇: 【Vue】vue3 部分组件手动刷新也无法热更新
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值