经典JavaScript手写面试题和答案

news/2025/2/19 8:33:33/

在这里插入图片描述

文章目录

    • 实现一个函数去重?
    • 实现一个函数,判断指定元素在数组中是否存在?
    • 实现一个函数,将给定字符串反转?
    • 实现一个函数,检测指定字符串是否为回文(即从前往后和从后往前的字符序列都相同)?
    • 实现一个函数,计算两个数的最大公约数?
    • 实现Array.prototype.reduce函数
    • 实现 一个类似setTimeout的函数delay(ms)
    • 实现一个防抖函数debounce(fn, delayTime)
    • 实现一个节流函数throttle(fn, intervalTime)
    • 实现一个深度拷贝函数deepClone(obj)


实现一个函数去重?

function unique(array) {return Array.from(new Set(array));
}

实现一个函数,判断指定元素在数组中是否存在?

function includes(array, value) {for (let i = 0, len = array.length; i < len; i++) {if (array[i] === value) {return true;}}return false;
}

实现一个函数,将给定字符串反转?

function reverseString(str) {// 将字符串分割成一个数组const arr = str.split('');// 反转数组arr.reverse();// 将数组拼接成字符串return arr.join('');
}

实现一个函数,检测指定字符串是否为回文(即从前往后和从后往前的字符序列都相同)?

function isPalindrome(str) {// 将字符串反转后与原字符串比较return reverseString(str) === str;
}
// 利用上题的实现
function reverseString(str) {return str.split('').reverse().join('');
}

实现一个函数,计算两个数的最大公约数?

function gcd(num1, num2) {return num2 ? gcd(num2, num1 % num2) : num1;
}

实现Array.prototype.reduce函数

Array.prototype.myReduce = function(fn, initialValue) {let accum = initialValue === undefined ? undefined : initialValue;for (let i = 0; i < this.length; i++) {if (accum !== undefined) {accum = fn.call(undefined, accum, this[i], i, this);} else {accum = this[i];}}return accum;
};

实现 一个类似setTimeout的函数delay(ms)

function delay(ms) {return new Promise((resolve) => setTimeout(resolve, ms));
}

实现一个防抖函数debounce(fn, delayTime)

function debounce(fn, delayTime) {let timerId;return function() {const context = this;const args = arguments;clearTimeout(timerId);timerId = setTimeout(() => {fn.apply(context, args);}, delayTime);};
}

实现一个节流函数throttle(fn, intervalTime)

function throttle(fn, intervalTime) {let timerId;let canRun = true;return function() {const context = this;const args = arguments;if (!canRun) return;canRun = false;timerId = setTimeout(function() {fn.apply(context, args);canRun = true;}, intervalTime);};
}

实现一个深度拷贝函数deepClone(obj)

function deepClone(obj) {if (typeof obj !== 'object' || obj === null) {return obj;}let result = Array.isArray(obj) ? [] : {};for (let key in obj) {if (obj.hasOwnProperty(key)) {result[key] = deepClone(obj[key]);}}return result;
}

http://www.ppmy.cn/news/78863.html

相关文章

【Linux】-yum的使用

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 ❤️‍&#x1fa79;作者宣言&#xff1a;认真写好每一篇博客 &#x1f4a8;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点…

Prometheus+Grafana学习(十一)安装使用pushgateway

Pushgateway允许短暂和批量作业将其指标暴露给 Prometheus。由于这些工作的生命周期可能不足够长&#xff0c;不能够存在足够的时间以让 Prometheus 抓取它们的指标。Pushgateway 允许它们可以将其指标推送到 Pushgateway&#xff0c;然后 Pushgateway 再将这些指标暴露给 Prom…

Linux基本指令介绍

目录 前言 指令操作与图形化界面的对比 adduser passwd whoami ls指令 pwd指令 cd指令 touch指令 mkdir指令 rmdir指令 && rm 指令 man指令 cp指令 mv指令 cat&#xff08;显示文件内容&#xff08;全部&#xff09;&#xff0c;且不可修改的&#xff09;…

关于字符集

字符集 编码与解码 计算机中储存的信息都是用二进制数表示的&#xff0c;而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则&#xff0c;将字符存储到计算机中&#xff0c;称为编码 。反之&#xff0c;将存储在计算机中的二进制数…

C++设计模式介绍与分类

目录 一、设计模式定义 二、设计模式的优点 三、设计模式缺点 四、设计模式中的抽象思维 五、抽象的方法 六、设计模式应用场景 七、设计模式分类 附加知识 &#xff08;1&#xff09;C面向对象三种访问修饰符 &#xff08;2&#xff09;父类析构函数必须为虚函数 &…

Docker(1)

一)什么是虚拟化&#xff1f;容器化&#xff1f; 1)物理机:实际的服务器或者计算机&#xff0c;相对于虚拟机而言的对实体计算机的称呼。物理 机提供给虚拟机以硬件环境&#xff0c;有时也称为“寄主”或“宿主&#xff1b; 2)虚拟化:是指通过虚拟化技术将一台计算机虚拟为多台…

Kafka实时数据同步

目录 1 概述 2 捕获Oracle数据到Kafka 2.1 数据捕获设置 2.2 数据发布设置 2.3 捕获到发布数据流映射 2.4 查看任务执行日志 3 订阅Kafka数据到ClickHouse 3.1 数据订阅设置 3.2 数据加载设置 3.3 订阅到加载数据流映射 3.4 查看任务执行日志 4 校验数据一致性 1 概…

Hadoop部署本地模式

​ 本地模式&#xff0c;即运行在单台机器上。没有分布式的思想&#xff0c;使用的是本地文件系统。使用本地模式主要是用于对MapReduce的程序的逻辑进行调试&#xff0c;确保程序的正确性。由于在本地模式下测试和调试MapReduce程序较为方便&#xff0c;因此&#xff0c;这种模…