![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaScript常用API
Always--Learning
选择远远大于努力
展开
-
手写reduce方法
手写常用的数组方法是面试中的常考题目,同时学会这些API的原理也能更好的帮助我们去理解这些API并加运用,下面让我们来一起手写reduce吧~原生reduce接收几个参数?原生的reduce是在Array的原型对象上的一个方法,其接收两个参数:一个回调函数。这个回调函数的前两个参数,分别表示累积值和当前值。初始值。实现原生reduce的思路通过slice原型方法获取到调用reduce的数组。定义一个临时结果变量和开始的索引。如果传入了初始值,res就等于这个初始值,没有传入re.原创 2022-04-18 08:00:10 · 1723 阅读 · 1 评论 -
JS模块化演变及其区别
为什么需要模块化?假如没有模块化,在前端开发时可能存在下面的问题:变量和方法不容易维护,容易污染到全局作用域。通过script标签进行大量引入资源,代码可读性和可维护性都比较差。代码一多就比较复杂。多人合作的场景下,资源的引入会带来比较大的困难。JS模块化的演变史1. CommonJS我们熟知的Node.js在模块化方面就是遵守的CommonJS规范。CommonJS模块化具有下面几个特点:模块内的代码运行在模拟作用域中,不会污染到全局作用域中。模块可以多次引入,但只会在第原创 2022-04-16 06:57:07 · 398 阅读 · 0 评论 -
你知道原型链?那你能实现一个new吗?
在学习前端知识的时候,我们不仅要会用工具和API,更要知道其实现原理,因为只有知道原理,我们的理解才能更上一层楼,这次让我们来一起解决最常见的new的实现原理吧。new在原型链中扮演什么样的角色?在this的指向规则中,有一种this指向是new绑定,new绑定会让构造函数的this指向我们新创建的对象,请看下面的例子:function sayHi(name){ this.name = name;}var Hi = new sayHi('zhangsan');console.log.原创 2022-04-15 07:37:34 · 280 阅读 · 0 评论 -
Promise的异常捕获问题
Promise根据异常出现的位置不同采取的方案也不同Promise内部抛出异常通过then的第二个函数来捕捉异常。// Promise的异常捕获问题const promise = new Promise((resolve,reject) => { throw new Error('test')})// 通过then的第二个函数来进行捕捉promise.then(res => { console.log(res);},err => { conso原创 2022-04-11 14:48:53 · 1721 阅读 · 0 评论 -
for...in和for....of的区别是什么?
核心区别:获取的内容不同for…in主要获取对象的key和数组的下标,同时for…in还能够遍历原型链上的可枚举属性。for…of主要获取对象的value值。const obj = {'a' : '111','b':'222'};for (let key in obj) { console.log(key); // a b}// 没有部署原生的iterator接口的对象不能直接遍历for (let value of Object.keys(obj)) { consol原创 2022-04-10 14:48:00 · 269 阅读 · 0 评论 -
你知道多少种判断数据类型的方法?
方式一:通过constructor通过constructor可以直接找到元素的构造函数类型,这种方法能够区分引用数据类型到底是哪种类型,请看下面的例子。const arr = [1,2,3,5];const date = new Date();const num = 666;const map = new Map();const set = new Set();const reg = new RegExp();const str = '111';const sym = Symbol(6原创 2022-03-30 16:02:15 · 2728 阅读 · 0 评论 -
关于数组去重,你知道多少种方案?
方式一:通过Set// 借助Set实现数组去重const arr = [2,3,5,6,8,6,8,2,9];const unique = [...new Set(arr)]console.log(unique); // [2,3,5,6,8,9]方式二:通过对象首先让待去重的数组的每个元素在对象中key和value相等,如果已经存在的情况下,通过splice对数组进行删除,此时需要注意下标的变化。// 通过对象实现数组去重const arr = [2,3,5,6,8,6,8,2,原创 2022-03-22 19:59:16 · 700 阅读 · 0 评论 -
使用reduce实现数组扁平化
实现的目标使用数组原生的API,reduce来实现flat,又叫数组拍平。下面是一个数组拍平的例子:[1, [[2], 3, 4], 5] --> [1,2,3,4,5]原生flat具有的特点原生flat每调用一次,数组的维度减少1,多维数组在这种情况时可能处理起来很麻烦,无法一次性的边多维数组变为一维数组,比如下面这个例子。const arr = [1, [[2], 3, 4], 5];console.log(arr.flat()); // [1,[2],3,4,5原创 2022-03-19 09:50:26 · 2270 阅读 · 1 评论 -
使用reduce实现map
原生map方法的特点map不会对原数组产生影响。map返回的是一个新数组。一个数组一旦调用map方法,每一个元素都会执行map中的回调函数。map方法会跳过被delete删除或者未定义的元素。原生map接收的两个参数都有什么用?第一个参数:callbackmap接收的第一个参数是一个回调函数,这个参数是必须传入的,callback中有三个可选参数,分别代表着元素,索引和调用map方法的数组,也就是(item,index,arr)。第二个参数:thisArg(定义执行callback的原创 2022-03-17 09:40:29 · 627 阅读 · 0 评论 -
LeetCode——最长公共前缀(数组API-every方法)
题目描述解题思路首先获取数组的第一个字符串,以这个字符串为标准进行后续的判断。定义需要返回的最终字符串,初始值为空串。使用循环比例第一个字符串,每次遍历的时候,都利用数组的every这个API,判断数组的每一个字符串的第i个字符,是否和子一个字符串的第i个字符一致,一致则返回true,并进行结果字符串的拼接,如果不是则直接返回result。如果最终没有匹配到,则返回空串result。AC代码var longestCommonPrefix = function(strs) { //原创 2021-10-05 09:27:32 · 235 阅读 · 0 评论 -
考查候选人正则基本功的面试题之《解析URL请求参数》
需求描述有一个字符串请求URL,我们需要将该字符串形式的URL中的请求参数转换为对象,相同key的value以数组形式进行呈现,没有value属性的参数,将value置为true。目标字符串http://www.getui.com?user=superman&id=345&id=678&user=superman2实现函数function parseParam(url) { // 1. 将问号后面的字符提取出来 const paramStr = /.+\原创 2021-10-03 10:29:31 · 293 阅读 · 0 评论 -
JS中取余与取整
取余6 % 2取整抛弃整数parseInt(7/3)向上取整(天花板嘛,代表上)Math.ceil(7/3)向下取整(地板嘛,代表下)Math.floor(7/3)四舍五入Math.round(7/3)原创 2021-07-02 10:59:12 · 543 阅读 · 0 评论 -
JS中将ASCII码值转换为对应字符
通过String.fromCharCode原创 2021-06-24 10:10:58 · 833 阅读 · 0 评论 -
JS中将二进制字符串转换为十进制的方法
通过parseInt原创 2021-06-24 10:09:17 · 994 阅读 · 0 评论 -
输入二叉树数组生成对应的二叉树数据结构(JavaScript)
需求输入一个二叉树的数组,函数能够生成对应的二叉树的结构代码const deserialize = (data) => { let res = '' for (let v of data) { res = res + v + ','; } for (let i = 0; i <= data.length; i++) { res = res + 'null' + ',' } data = res;原创 2021-05-07 11:01:49 · 364 阅读 · 0 评论 -
JS中求中位数的方法
下面这段代码可以求中位数const mid = left + right >>> 1;原创 2021-05-02 09:01:56 · 1505 阅读 · 1 评论 -
空数组调用every方法
空数组调用every方法,直接返回true参考文献原创 2021-04-27 11:53:12 · 836 阅读 · 0 评论 -
JS中的for in循环中的变量指的是什么?
很多人以为这里的i是下标,其实不是,而是下标的字符串形式?原创 2021-04-05 10:46:06 · 445 阅读 · 0 评论 -
将一句英文的每个单词首字母大写其余字母小写
灵活使用toUpperCase和toLowerCase注意修改的是字面量还是变量function titleCase(str) { const result = str.split(' '); for (let i in result) { result[i] = result[i][0].toUpperCase() + result[i].slice(1,result[i].length).toLowerCase(); } result con原创 2021-04-04 11:12:04 · 3392 阅读 · 0 评论 -
JS中判断一个值是否为布尔类型的值
注意:是字符串原创 2021-04-04 10:52:34 · 13472 阅读 · 0 评论 -
一行代码反转字符串
代码如下str = str.split('').reverse().join('')原创 2021-04-02 10:06:24 · 271 阅读 · 0 评论 -
JS中的小数四舍五入之(toFixed方法)
使用toFixed方法原创 2021-04-01 11:54:59 · 187 阅读 · 0 评论 -
JS中filter方法
filter方法的应用场景filter方法和map方法的区别是:map方法返回的数组的元素数和原数组的元素数是一样的,但是filter会修改元素数原创 2021-04-01 11:43:28 · 200 阅读 · 0 评论 -
JS中的map方法
map的使用场景当想对数组中的每个元素进行修改的时候,返回的元素数目不变还是这些,但是内容发生了变化的情况,使用map原创 2021-04-01 11:42:01 · 288 阅读 · 0 评论 -
JS中reduce方法
reduce方法可以用来求一个数组的累计和pre代表前面所有的加一起的累积值0代表的是默认的pre值index代表的是下标reduce方法将数组中的元素连接成一个长的字符串原创 2021-03-30 15:58:32 · 232 阅读 · 0 评论 -
JS中some()方法
some()方法接收一个回调函数,只要其中有一个元素返回的是true,总体返回的是truereturn会终止some循环,return不会终止forEach循环原创 2021-03-30 15:46:01 · 1911 阅读 · 0 评论 -
JS中every()方法
every()方法的返回值是一个布尔类型的值every()方法接收的是一个回调函数every()方法存在的意义是什么?检验数组中的每个元素是否符合要求,只要都符合,返回true原创 2021-03-30 15:42:10 · 3312 阅读 · 1 评论 -
JS中对数组进行排序(sort)
使用sort方法对字符串数组进行排序不推荐使用sort方法直接对全部是数字的数组进行排序通过给sort传递回调函数可以使得sort方法对数字数组进行排序原创 2021-03-30 15:34:32 · 185 阅读 · 0 评论 -
JS中使数组倒序排列
使用reverse方法注意:reverse方法会使得原数组发生变化原创 2021-03-30 15:07:11 · 3643 阅读 · 0 评论 -
JS中给数组中间添加元素的方法
使用拓展运算符结合splice方法原创 2021-03-30 15:03:47 · 4985 阅读 · 0 评论 -
javascript中的splice方法与slice方法的区别
区别1:splice方法会对原数组产生修改,slice方法不会区别2:splice的第二个参数代表的是个数,但是slice的第二个参数代表的是区间(包含左边不包含右边)原创 2021-03-30 10:20:47 · 2234 阅读 · 0 评论