比较版本号
var compareVersion = function(version1, version2) {
const v1 = version1.split('.');
const v2 = version2.split('.');
for (let i = 0; i < v1.length || i < v2.length; ++i) {
let x = 0, y = 0;
if (i < v1.length) {
x = parseInt(v1[i]);
}
if (i < v2.length) {
y = parseInt(v2[i]);
}
if (x > y) {
return 1;
}
if (x < y) {
return -1;
}
}
return 0;
};
比较两个对象是否相等
实现getValueByPath
手写promise
手写eventEmitter
连续区间
- 将一天24小时按每半小划分成48段,我们用一个位图表示选中的时间区间,例如
110000000000000000000000000000000000000000000000, * 表示第一个半小时和第二个半小时被选中了,其余时间段都没有被选中,也就是对应00:00~01:00这个时间区间。一个位图中可能有多个不连续的 * 时间区间被选中,例如110010000000000000000000000000000000000000000000,表示00:00-1:00和02:00-02:30这两个时间区间被选中了。
实现一个批量请求函数, 能够限制并发量
写出一个函数trans,将数字转换成汉语的输出,输入为不超过10000亿的数字。
数组转树结构
const arr = [{ id: 2, name: '部门B', parentId: 0 }, { id: 3, name: '部门C', parentId: 1 }, { id: 1, name: '部门A', parentId: 2 }, { id: 4, name: '部门D', parentId: 1 }, { id: 5, name: '部门E', parentId: 2 }, { id: 6, name: '部门F', parentId: 3 }, { id: 7, name: '部门G', parentId: 2 }, { id: 8, name: '部门H', parentId: 4 } ]
去除字符串中出现次数最少的字符,不改变原字符串的顺序。
“ababac” —— “ababa” “aaabbbcceeff” —— “aaabbb”