ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

传说中的前端100问

2022-01-29 12:04:56  阅读:147  来源: 互联网

标签:arr set 键名 前端 数组 item let 传说 100


一、第1-10题

  1. (滴滴)写react、vue项目是为什么要在列表组件中写key,其作用是什么?

key是给每一个vnode的唯一id,可以依靠key,更准确,更快的拿到oldVnode中对应的vnode节点

  2.什么是防抖、节流?有什么区别?如何实现?

防抖:触发高频事件后n秒内只会执行一次,如果n秒内高频事件再次被触发,测重新计算事件

思路:每次触发事件时都会取消之前的延时回调方法.

节流:高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率

思路:每次触发事件时都判断当前是否有等待执行的延时函数

  3.介绍一下set、map、weakSet和weakMap的区别?

set和map主要的应用场景在于数据重组和数据储存

set是一个叫做集合的数据结构类似于数组,但是成员时唯一且无序的,没有重复的值

//数组去重
let arr=[1,2,3,4,1]
[...new Set(arr)]

向set中加入值时,不会发生类型转换

weakSet对象允许你将弱引用对象储存在一个集合中

weakset对象于set的区别:

  weakset只能储存对象引用,不能存放值,而set对象都可以

Map(字典)集合与字典的区别:

  共同点:集合、字典可以储存不重复的值

  不同点:集合是以【vaue,value】的形式存储,字典是以[key,value]的形式储存

  • 本质上时键值对的集合,类似集合
  • 可以遍历,方法很多可以跟各种数据格式转化

weakMap

  • 只接受对象作为键名,不接受其他类型的值作为键名
  • 键名时弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收,此时键名是无效的
  • 不能遍历,方法有get、set、has、delete

  4.已知如下数组:

var arr=[ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];编写一个程序将数组扁平化并去除其中重复部分数据,最终得到一个升序且不重复的数组

var arr=[ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
let arr1=[];
arr1=[...new Set(arr.flat(Infinity))].sort((a,b)=>a-b)
console.log(arr1)

  5.有以下3个判断数组的方法,请分别介绍他们的区别和优劣

Object.prototype.toString.call()、instanceof以及Array.isArray()

1.Object.prototype.toString.call()这种方法对于所有基本的数据类型都能进行判断,即使是null和undefined.

2.instanceof的内部机制是通过判断对象向的原型链中是不是能找到类型的prototype。

  [] instanceof Array;//true

3.Array.isArray()

  6.请把两个数组 ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'] 和 ['A', 'B', 'C', 'D'],合并为 ['A1', 'A2', 'A', 'B1', 'B2', 'B', 'C1', 'C2', 'C', 'D1', 'D2', 'D']。

let a1=['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'];
let a2=['A','B','C','D'].map((item)=>{
   return item+3 
});
let a3=[...a1,...a2].sort().map((item)=>{
   if(item.includes('3')){
       returen item.split('')[0]
}
return item
})

 

 

 

标签:arr,set,键名,前端,数组,item,let,传说,100
来源: https://www.cnblogs.com/qiaozhiming123/p/15854633.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有