定义一个空对象,后续的方法都添加到该对象上。
const _ = {
}
======================================================================
const arr = [0, 0, 1, 1, 1, 2, 2, 3, 3, 4, 1, 2]
去除重复数字得到:
[ 0, 1, 2, 3, 4 ]
1. ES6 Set
_.uniqV1 = arr => […new Set(arr)];
或者
_.uniqV1 = arr => Array.from(new Set(arr));
2. 双层for
循环
遍历原始数组,发现重复的项则用splice
移除。
_.uniqV4 = arr => {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
j–;
}
}
}
return arr;
}
3. for
循环 额外空间
_.uniqV2 = arr => {
const res = [];
for (let i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i]) === -1) {
res.push(arr[i]);
}
}
return res;
}
4. Array.prototype.filter()
用filter
过滤数组,返回当前元素在原始数组中的第一个索引和当前索引值相等的项即可。
_.uniqV3 = arr => arr.filter((item, index, arr) => {
return arr.indexOf(item, 0) === index;
});
5. 排序 + 双指针
起初快慢指针指向数组头 arr[i] = arr[j] = arr[0]
当arr[i] !== arr[j] 时,i向前移动一位,同时把arr[j] 赋值给 arr[i]
j 向前移动一位
_.uniqV5 = arr => {
arr.sort();
// i 慢指针 j 快指针
let [i, j] = [0, 0];
while (j < arr.length) {
if (arr[j] !== arr[i]) {
i++;
arr[i] = arr[j];
}
j++;
}
return arr.slice(0, i + 1)
}
=======================================================================
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
文末
我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。
首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。
更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。
前端面试题汇总
JavaScript
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
性能
linux
前端资料汇总
g-blog.csdnimg.cn/img_convert/d7f6750332c78eb27cc606540cdce3b4.png)
linux
前端资料汇总