js面试题

1.数组有哪些方法?

数组的增删改查:push()、unshift()、shift()、pop()、splice()、join()、reverse()

数组的遍历操作:map()、filter()、some()、every()、findindex()、reduce()

2.map()对比forEach()

1.map有返回值可以开辟新空间return出来一个length和原数组一致的数组,即便数组元素是undefined或者是null

2.forEach默认无返回值,返回结果为undefined,可以通过在函数体内部使用索引修改数组元素

3.map的处理速度比forEach快,而且返回一个新的数组,方便链式调用其他数组新方法

3.Diff算法的基本概念和作用

Diff算法通过比较两个虚拟DOM树之间的差异,找出需要更新的部分,从而优化性能并减少不必要的操作。在前端框架中,Diff算法主要用于虚拟DOM的比较和更新过程。例如,React和Vue使用Diff算法进行虚拟DOM对比,只更新变化的部分,而不是重新渲染整个DOM‌

4.for in对比for of区别

简单来说就是它们两者都可以用于遍历,不过for in遍历的是数组的索引(index),而for of遍历的是数组元素值(item)

5.数组去重的方法

1.利用新旧数组遍历对比法

arr=[1,5,1,3,5,4,3,9,8]

let newArr=[]

//indexOf用于查找数组元素第一次出现的位置,没找到则返回值为-1,参数有两个,第一个为元素项目,参数二(可选)需要查找的位置,负数从-1往前面加

for(let i = 0;i <arr.length;i++){

  if(newArr.indexOf(arr[i] )=== -1) {

    newArr.push(arr[i]);

  }

}

console.log(newArr); //[1,5,3,4,9,8]

2.利用新语法 new Set()

arr=[1,5,1,3,5,4,3,9,8]

let mySet = new Set(arr); // 非重复的类数组

console.log(mySet,'mySet'); //{{1,5,3,4,9,8}}

//let newArr = Array.from(mySet); //set转数组

let newArr=[...mySet]; // 或者是这种解构方法

console.log(newArr); //[1,5,3,4,9,8]

3.filter与indexOf结合

过滤,利用索引与每一项出现的首次位置(indexOf作用)进行对比,当符合条件的时候返回回去

arr=[1,5,1,3,5,4,3,9,8]

var newArr=arr.filter((item,index) => {

  return arr.indexOf(item) === index

})

console.log(newArr); //[1,5,3,4,9,8]

4.includes()的妙用

arr=[1,5,1,3,5,4,3,9,8]

let newArr=[]

for(let i=0;i<arr.length;i++){

  if(!newArr.includes(arr[i])){

    newArr.push(arr[i]);

  }

}

console.log(newArr); //[1,5,3,4,9,8]

5.利用对象属性来进行判断

arr=[1,5,1,3,5,4,3,9,8]

let obj = {};

let newArr = [];

for(let i = 0;i<arr.length;i++){

  if(!obj[arr[i]]){

    obj[arr[i]] = arr[i]; 

  }

}

console.log(obj); //{1:1,3:3,4:4,5:5,8:8,9:9}

 

 

 

 

 

posted @ 2025-05-28 20:23  鱼的四季  阅读(7)  评论(0)    收藏  举报