MurphyChen

「命运的车轮一直在转动,我们必须适应它,否则就会被碾碎」

关于 JS 数组遍历的一些细节

被忽略的 JS 数组技巧。

1. 空位处理规则 ES6 新增的数组扩展至有这么一项,对于数组空位统一处理为 undefined。这意味着 ES5 的一些数组方法,不会去处理数组空位项,下面是个典型例子: 1 2 let arr = Array(5) // <5 empty items> let res = arr.map(e => e + 1) // <5 empty items> ...

Array.from() 的妙用

被忽略的 JS 数组技巧。

前置知识 Array.from() 接收一个类数组,或者一个可迭代对象(包括数组、Map 等),然后创建一个新的数组,并返回该新数组。 Array.from(arrayLike, fn, thisArg) 方法一共三个参数: arrayLike:要转换成数组的类数组或可迭代对象 fn:可选,类数组或可迭代对象中的每一项都将执行该函数 thisArg:- 可选参数,执行回调...

a==1 && a==2 && a==3 的三种解法

隐式转换题,多种解法

问题提出 相信大家都很熟悉这个面试题了。但是今天我们要使用三种方法来解这道题,分析问题的过程中也可以查漏补缺、复习基础。看看哪种方法你不会。 经典问题:当 a 为何值,可使 a 成功打印? 1 2 3 4 // let a = ??? 可使 a 成功输出 if (a == 1 && a == 2 && a == 3) { console.log(a)...

JS 函数式编程『简明教程』

函数式编程——JS重要的编程思想

本文是一个 简明 的函数式编程入门,通过实际应用场景举例,带你快速学会 JS 函数式编程。涉及以下知识点: 编程范式 纯函数 柯里化 偏函数 函数合成 尾调用 1. 编程范式 编程范式,就是在软件开发过程中程序代码的 典型的编程风格。编程范式决定了程序员对程序编写和执行的看法,也决定了我们编写代码的方式和风格。 编程但是主要有以下几种 命令式编程 ...

JS实现三种脑洞大开的奇葩排序算法

奇怪而又没啥用的排序算法

这次我们要讲的不是正经的冒泡排序、快排、堆排序之类的,而是三种奇葩的算法: 睡眠排序(SleepSort) 猴子排序(MonkeySort) 面条排序(NoodlesSort) 实际上这三种算法并没有什么用,但很有趣。我要用 JS 实现,这里也涉及一些其他的算法和 JS 的特性,所以就当 锻炼思维能力和熟悉 JS 特性了。 睡眠排序 (1)原理:所谓 “睡眠”,就是根...

面试官:怎么求斐波那契数列的第 9292 项?

大数相加算法题

模拟一道面试题。 面试官:怎么求斐波那契数列的第 9292 项? 初看题目,求斐波那契数列啊,这谁不会?但是要求的是第 9292 项,你心里想了一下,这个数肯定很大,结果会溢出的。但这在面试,总不能不写吧,不然让面试官以为你不会写。毕竟只要不写递归,都能算出来,求 9292 项,也就迭代计算几千次。于是你写出了以下代码: 1 2 3 4 5 6 7 8 9 10 functio...

手搓一个 Function.prototype.once()

一个只执行一次的函数

一道面试题:定义一个 once 方法,该函数方法只执行一次,具体要求和描述如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 定义一个函数方法,满足下面要求 function f(x) { console.log(x) return x * 2 } const fOnce = f.once() // 你要定义的 once 方法 let ans1 = f...

add(1)(2)(3)你会写了,那么add[1][2][3]呢?

盘点那些偏门的 JS 面试题

首先来看一道面试题,你可以停下来,自己先思考一下这道题。 面试题:请定义 add,使得以下表达式可以成功计算结果。 1 2 3 add[1][2][3] + 4 // 10 add[10][20] + 30 // 60 add[1000][2000][3000] + 4000 // 10000 乍一看这道题,有点像常考的柯里化,也就是 add(1)(2)(3) 这种,我相信大家已经都...

从一张表情包浅析JS的特性

JS 中 奇怪的行为

正式阅读本文之前,先来做做下面这个 JS 测试吧!第一次做的时候你可能不及格,但看完本文后相信你可以拿到很高的分数。 JS Is Weird 主要是解析,不会讲太多基础知识,不熟悉隐式转换的同学建议先阅读这篇文章: https://juejin.cn/post/6844903694039777288 先来道难题,解释以下结果返回值为何为 '10' ?看完全文,相信你能...

JavaScript 删除对象属性

在 JS 中如何删除一个对象 object 的属性?

需求 有下面一个对象,现在有一个需求,要删除该对象的 age 属性。 1 2 3 4 5 let obj = { id: '1001', name: 'peter', age: 18 } 1. 方法一:使用 delete 1 2 3 4 5 6 7 8 let obj = { id: '1001', name: 'peter', age: 18 } delet...