![](https://img-blog.csdnimg.cn/20210903165232152.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试笔记(五)【代码手写题】篇
前端面试题的整合,尽量写全又简洁易懂的风格。
此篇为【手写代码】相关知识的整理。
面试笔记系列专栏共7个篇章,会不定期更新。
敲起来blingbling
挺秃然的
展开
-
手写防抖函数和节流函数
防抖函数function debounce(fn, delay) { var timeout = null; // 创建一个标记用来存放定时器的返回值 return function () { // 每当用户输入的时候把前一个 setTimeout clear 掉(每次触发就重新计时) clearTimeout(timeout); // 然后又创建一个新的 setTimeout, 这样就能保证间隔时间内如果时间持续触发,就不会执行 fn 函数 timeout = s原创 2021-09-13 19:51:27 · 159 阅读 · 0 评论 -
手写一个ajax
function Ajax(type, url, flag) { return new Promise((resolve, reject) => { let xhr = new XMLHttpRequest() // 声明一个XMLHttpRequest对象 xhr.open(type, url, flag) // 创建请求 (规定请求的类型、请求路径、是否异步处理请求) xhr.setRequestHeader('content-Type', 'application/x原创 2021-09-13 19:50:22 · 94 阅读 · 0 评论 -
手写一个promise
function fn(flag) { return new Promise((resolve, reject) => { if (flag) { setTimeout(() => { resolve(1) }, 1000) } else { reject(2) } })}fn(1).then((data) => { console.log(data); // 1s后输出1}).catch((e原创 2021-09-13 19:48:55 · 49 阅读 · 0 评论 -
两个数组的交集和并集
let arr1 = [1, 2, 3, 4, 5, 5]let arr2 = [4, 5, 5, 6]// 交集let res1 = Array.from(new Set(arr1.filter(item => arr2.includes(item))))// 并集let res2 = Array.from(new Set([...arr1, ...arr2]))console.log(res1); // [4,5]console.log(res2); // [1,2,3,4,5,原创 2021-09-13 19:48:13 · 217 阅读 · 0 评论 -
正则实现trim()功能
function myTrim(str) { let reg = /^\s+|\s+$/g return str.replace(reg, "")}console.log(myTrim(' asdf ')) // 'asdf'原创 2021-09-13 19:47:46 · 220 阅读 · 0 评论 -
让某个div每n秒换一次背景
var imgs = ["a.png", "b.png", "c.png"];var x = 0;function timer() { x++; x = x % 3; // 超过2则取余数,保证循环在0、1、2之间(3张图) document.getElementById("bgImg").src = "./image/" + imgs[x]; // bgImg为目标div的id ./image是存放三张替换图片的路径} setInterval("timer()"原创 2021-09-13 19:46:59 · 286 阅读 · 0 评论 -
解构赋值,实现两个变量的值的交换
let a = 1;let b = 2;[a, b] = [b, a]console.log(a) // 2console.log(b) // 1原创 2021-09-12 11:33:20 · 2009 阅读 · 1 评论 -
js查询字符串中出现最多的字符(reduce高级应用)
reduce高级应用:计算数组中每个元素出现的次数 { }var str = 'abcdaabc';console.log(str.split('')) // [ 'a', 'b', 'c', 'd', 'a', 'a', 'b', 'c' ]let resObj = str.split('').reduce((pre, cur) => { pre[cur] ? pre[cur]++ : pre[cur] = 1 return pre;}, {})console.log(resO原创 2021-09-12 11:32:44 · 468 阅读 · 0 评论 -
js数组去重
1 es6 Setfunction unique(arr) { return Array.from(new Set(arr))}let arr = [1, 2, 1, 3, 9, 4, 5, 3, 4, 6, 6]let res = unique(arr)console.log(res); // [ 1, 2, 3, 9, 4, 5, 6 ]Array.from()就是将一个类数组对象或者可遍历对象转换成一个真正的数组2 filter + indexOfindexOf() 方法可返回某原创 2021-09-12 11:31:45 · 65 阅读 · 0 评论 -
js冒泡排序
1、比较相邻的两个元素,如果前一个比后一个大,则交换位置2、比较完第一轮的时候,最后一个元素是最大的元素3、这时候最后一个元素是最大的,所以最后一个元素就不需要参与比较大小( len - 1 - i)function fn(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { for (var j = 0; j < len - 1 - i; j++) { // 相邻元素两两对比,元素交换原创 2021-09-12 11:31:00 · 129 阅读 · 0 评论