FrankKai

Results 350 comments of FrankKai

### 数组去重 ```js 输入: ['1', '2', '3', 1, '2', undefined, undefined, null, null, 1, 'a','b','b']; 输出: ["1", "2", "3", 1, undefined, null, "a", "b"] ``` 答案 ```js // 解法1:includes function...

### 返回 excel 表格列名 ```js 输入:1 输出:A 输入:2 输出:B 输入:26 输出:Z 输入:27 输出:AA 输入:52 输出:AZ ``` 答案 ```js function getExcelColumn(column) {     const obj = {};     let i = 0;     const ...

### 如何检测一个空对象 ``` 如何检测出{}这样的空对象 ``` 答案 ```js // 解法1: Object.prototype.toString.call和JSON.stringify function isObjEmpty(obj){ return Object.prototype.toString.call(obj)==="[object Object]" && JSON.stringify({}) === "{}"; } // 解法2: Object.keys() Object.values() function isObjEmpty(obj){ return Object.keys(obj).length === 0...

### 实现a+a+a打印'abc' ```js console.log(a + a + a); // 打印'abc' ``` 答案 ```js /* console.log(a + a + a); // 打印'abc' */ /** * 解法1: Object.defineProperty() 外部变量 */ let value...

### 实现一个Event模块 ```js 简单实现一个事件订阅机制,具有on、emit、once、off on(event, func){ ... } emit(event, ...args){ ... } once(event, func){ ... } off(event, func){ ... } const event = new EventEmitter(); event.on('someEvent', (...args) => { console.log('some_event...

### 大整数相加 ```js 请通过代码实现大整数(可能比Number.MAX_VALUE大)相加运算 var bigint1 = new BigInt('1231230'); var bigint2 = new BigInt('12323123999999999999999999999999999999999999999999999991'); console.log(bigint1.plus(bigint2)) ``` 答案 ```js function BigInt(value) { this.value = value; } BigInt.prototype.plus = function (bigint) {...

### SuperPerson继承Person ```js 写一个类Person,拥有属性age和name,拥有方法say(something) 再写一个类Superman,继承Person,拥有自己的属性power,拥有自己的方法fly(height) ES5方式 ``` 答案 ```js function Person(age, name){ this.age = age; this.name = name; } Person.prototype.say = function(something) { // ... } function Superman(age, name, power){...

### 字符串隐藏部分内容 ```js 字符串隐藏部分内容 说明:实现一个方法,接收一个字符串和一个符号,将字符串中间四位按指定符号隐藏 1. 符号无指定时使用星号(*) 2. 接收的字符串小于或等于四位时,返回同样长度的符号串,等同于全隐藏,如 123,隐藏后是 *** 3. 字符串长度是大于四位的奇数时,如 123456789,隐藏后是 12****789,奇数多出来的一位在末尾 示例: mask('blibaba', '#'); // b####ba mask('05716666'); // 05****66 mask('hello'); // ****o mask('abc', '?'); // ???...

### 实现一个sum(1,2,3)(4)(5)(6,7)(8)() 返回结果为这些数字的和:36。 这是一道考察**求和+闭包+递归**的题目。 答案 ```js function sum(){ const result = [...arguments].reduce((acc, cur)=>acc+cur) return function(){ if(arguments.length === 0)return result return sum(...[...arguments, result]); } } ```

### 实现一个sum(1,2,3)(4)(5)(6,7)(8)()升级版:如何实现**加,减,乘,除**呢? ```js sum(1,2,3)(4)(5)(6,7)(8)() minus(1,2,3)(4)(5)(6,7)(8)() multiple(1,2,3)(4)(5)(6,7)(8)() divide(1,2,3)(4)(5)(6,7)(8)() ``` 除了考察**求和,闭包,递归**以外,还考察了**柯里化函数**。 sum和multiple不用关注顺序。 而minus和divide需要注意顺序,因此在`return curried(...[result, ...arguments]);`中将result前置了。 答案 ```js function curry(callback){ return function curried (){ const result = callback(arguments) return function(){ if(arguments.length === 0)return...