Rock
                                            Rock
                                        
                                    根据 ECMAScript 语言规范,我梳理了一下大概的思路,然后整理了一段代码如下 ``` function new_instance_of(leftVaule, rightVaule) { let rightProto = rightVaule.prototype; // 取右表达式的 prototype 值 leftVaule = leftVaule.__proto__; // 取左表达式的__proto__值 while (true) { if (leftVaule === null) { return...
### 思路 标签:位运算 - 本题根据题意,线性时间复杂度 O(n)O(n),很容易想到使用 Hash 映射来进行计算,遍历一次后结束得到结果,但是在空间复杂度上会达到 O(n)O(n),需要使用较多的额外空间 - 既满足时间复杂度又满足空间复杂度,就要提到位运算中的异或运算 XOR,主要因为异或运算有以下几个特点: - 一个数和 0 做 XOR 运算等于本身:a⊕0 = a - 一个数和其本身做 XOR 运算等于 0:a⊕a = 0 - XOR 运算满足交换律和结合律:a⊕b⊕a...
### 解题思路 - 对孩子数组与饼干数组从小到大排序 - 初始化孩子下标为0 - 遍历饼干数组,符合条件则孩子下标 +1 **代码** ``` /** * @param {number[]} g * @param {number[]} s * @return {number} */ var findContentChildren = function (g, s)...
一、**Pomise.all** 常见使用场景 : 多个异步结果合并到一起 Promise.all可以将多个Promise实例包装成一个新的Promise实例。用于将多个Promise实例,包装成一个新的Promise实例。 1.它接受一个数组作为参数。 2.数组可以是Promise对象,也可以是其它值,只有Promise会等待状态改变。 3.当所有的子Promise都完成,该Promise完成,返回值是全部值的数组。 4.如果有任何一个失败,该Promise失败,返回值是第一个失败的子Promise的结果。 二、**Pomise.race** 类似于Promise.all() ,区别在于 它有任意一个返回成功后,就算完成,但是 进程不会立即停止 常见使用场景:把异步操作和定时器放到一起,如果定时器先触发,认为超时,告知用户
**共同点:** 1.每一项的遍历数组 2.三个参数相同 3.返回的值都是布尔值 **区别:** 1.some()方法,遍历数组中的每一项,若其中一项为true,则返回值是true 2.every()方法,遍历数组每一项,若全部为true,才返回true ,否则返回false
``` function print(n){ setTimeout((() => { console.log(n) return ()=>{} }).call(n,[]), Math.floor(Math.random() * 1000)); } for(var i = 0; i < 100; i++){ print(i); } ```
### 1.双指针解法 原数组是非递减排列的,元素的平方和最大,要么是第一项,要么是最后一项。 维护头尾指针,所指向的元素,平方和更大者,安排到结果数组的最后一项。 指针相应的更新,继续比较头尾元素的平方和,较大者,安排到结果数组的倒数第二项。 以此类推。把结束数组的所有元素填满。 **代码** 时间复杂度:O(n)O(n),空间复杂度:O(n)O(n) ``` const sortedSquares = (A) => { let start = 0; let end = A.length - 1; const res = new Array(A.length);...
### 1.Map **解题思路** Map作哈希表,Map.values()用Set去重与Map.size相等则独一无二 **代码** ``` var uniqueOccurrences = function(arr, a) { return a = arr.reduce((h, v) => h.set(v, (h.get(v) || 0) + 1), new Map()), new Set(a.values()).size === a.size...
``` // es6 class Person { constructor(name, age) { this.name = name; this.age = age; } eat() { return 'eat' } static say() { return 'say' } } // 通过babel转换成的es5语法...
### Mobx 思想的实现原理 Mobx 最关键的函数在于 autoRun,举个例子,它可以达到这样的效果: ``` const obj = observable({ a: 1, b: 2 }) autoRun(() => { console.log(obj.a) }) obj.b = 3 // 什么都没有发生 obj.a = 2 //...