cvte一面
Vue-Router相关:hash模式,#
箭头函数
箭头函数 + this代码输出题
如何改变this的指向
事件循环
事件循环代码输出题
会话cookie和持久化cookie有什么区别?
expire和max-age有什么区别?max-age是基于什么的?
cookie还有什么属性?
跨域cookie问题怎么解决?
Vue组件传值
promise相关,async await,generator
CSS:实现一个九宫格(grid,flex);实现一个点数为5的骰子(只有五个子元素)
场景题
背景:页面加载时,我们要会有一个loading,但页面加载很快,loading一闪而过。
问题:解决loading一闪而过
实现:我们要让loading加载0.5s后再进行其他渲染,如何实现?
算法
哈希表
每日一题
手撕
// 数组扁平化,就是吧一个嵌套多层的数组array转换成只有一层的数组
let arr = [1,2,[3,4,[5]]]
// 方法一
// 递归
function myFlatten(arr){
let resArray = [];
// 遍历数组
for(let i=0; i<arr.length; i++){
if(Array.isArray(arr[i])){
resArray = resArray.concat(myFlatten(arr[i]));
}else{
resArray.push(arr[i]);
}
}
return resArray;
}
console.log(myFlatten(arr)); // [ 1, 2, 3, 4, 5 ]
// 方法二 reduce
function myFlatten2(arr){
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? myFlatten2(cur) : cur);
},[])
}
console.log(myFlatten2(arr)) // [ 1, 2, 3, 4, 5 ]
// 方法三 扩展运算符 扩展运算符一次只能扩展一层
function myFlatten3(arr){
while(arr.some((item) => Array.isArray(item))){
arr = [].concat(...arr);
}
return arr;
}
console.log(myFlatten3(arr)) // [ 1, 2, 3, 4, 5 ]