最后
全网独播-价值千万金融项目前端架构实战
从两道网易面试题-分析JavaScript底层机制
RESTful架构在Nodejs下的最佳实践
一线互联网企业如何初始化项目-做一个自己的vue-cli
思维无价,看我用Nodejs实现MVC
代码优雅的秘诀-用观察者模式深度解耦模块
前端高级实战,如何封装属于自己的JS库
VUE组件库级组件封装-高复用弹窗组件
let arr = [];
for(let i = 0; i < 1000000;i ++) {
arr.push(Math.floor(1000000* Math.random()))
}
使用console.time('test')和console.timeEnd('test')来测试时间(名称要相同)。
console.time('test');
console.log("方法名称")
uniqueArray(arr);
console.timeEnd('test');
一:通过数组的双重循环去重:
实现思路1:
function uniqueArray(arr) {
const newArr = [];
let isRepeat;
for (let i = 0; i < arr.length; i++) {
isRepeat = false;
for (let j = 0; j < newArr.length; j++) {
if (newArr[j] === arr[i]) {
isRepeat = true;
break;
}
}
if (!isRepeat) {
newArr.push(arr[i])
}
}
return newArr;
}
测试时间为如下:
实现思路2:
function uniqueArr(arr) {
const newArr = [];
let isRepeat;
for (let i = 0; i < arr.length; i++) {
isRepeat = false;
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
isRepeat = true;
break;
}
}
if (!isRepeat) {
newArr.push(arr[i])
}
}
return newArr;
}
测试时间如下:
总结:这种方法是我们刚开始学习编程语言最常用的方法,数据量小的时候看不出性能问题,但是数据量大就可以看出缺点了。
二:通过数组的filter()方法
实现思路:filter()方法的过滤功能,indexOf()方法只返回第一次出现的索引
function uniqueArray(arr) {
return arr.filter((item,index) => {
return arr.indexOf(item) === index;
})
}
测试时间如下:
三:通过数组方法forEach + indexOf
实现思路:
function uniqueArr(arr) {
const newArr = [];
arr.forEach(item => {
if (newArr.indexOf(item) === -1) {
newArr.push(item)
}
});
return newArr;
}
测试时间:
四:通过数组sort()方法
实现思路1:
function uniqueArray(arr) {
const newArr = [];
arr.sort();
for (let i = 0; i < arr.length; i++) {
if (arr[i] !==arr[i+1]) {
newArr.push(arr[i])
}
}
return newArr;
}
测试时间:
实现思路2:
function uniqueArray(arr) {
const newArr = [];
arr.sort()
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== newArray[newArr.length-1]) {
newArr.push(arr[i])
}
}
return newArr;
}
测试时间:
五:通过数组的includes()方法
实现思路:
function uniqueArray(arr) {
const newArr = [];
arr.forEach(item => {
if (!newArr.includes(item)) {
newArr.push(item)
}
})
return newArr;
} ES6
-
列举常用的ES6特性:
-
箭头函数需要注意哪些地方?
-
let、const、var
-
拓展:var方式定义的变量有什么样的bug?
-
Set数据结构
-
拓展:数组去重的方法
-
箭头函数this的指向。
-
手写ES6 class继承。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
微信小程序
-
简单描述一下微信小程序的相关文件类型?
-
你是怎么封装微信小程序的数据请求?
-
有哪些参数传值的方法?
-
你使用过哪些方法,来提高微信小程序的应用速度?
-
小程序和原生App哪个好?
-
简述微信小程序原理?
-
分析微信小程序的优劣势
-
怎么解决小程序的异步请求问题?
其他知识点面试
-
webpack的原理
-
webpack的loader和plugin的区别?
-
怎么使用webpack对项目进行优化?
-
防抖、节流
-
浏览器的缓存机制
-
描述一下二叉树, 并说明二叉树的几种遍历方式?
-
项目类问题
-
笔试编程题:
最后
技术栈比较搭,基本用过的东西都是一模一样的。快手终面喜欢问智力题,校招也是终面问智力题,大家要准备一下一些经典智力题。如果排列组合、概率论这些基础忘了,建议回去补一下。