JS + ES6 高频面试题合集

这篇博客汇总了JavaScript和ES6的高频面试题,涵盖了数据类型、内置对象、数组方法、数组去重、深拷贝、Promise理解、模块导入导出、箭头函数以及约瑟夫环问题等多种知识点,详细解析了各种操作和实现方式。
摘要由CSDN通过智能技术生成

目录

js数据类型有哪些

基本数据类型

引用数据类型

内置对象有哪些

数组方法有哪些    

数组去重几种方式

        1--双重for循环

        2--indexOf()方法

        3--splice()方法

        4--filter()方法

        5--利用对象属性不能重复的特点

        6--利用Set结构成员不能重复的特点

        7--利用Map结构成员不能重复的特点

数组深拷贝几种方式

        1--for循环

        2--slice方法

        3--concat方法

        4--扩展运算符

对象深拷贝几种方式

        1--for...in...循环

        2--利用JSON,先转JSON字符串在转JSON对象

        3--扩展运算符

        4--Es6中的Object.assign方法

定时器有几种,有什么区别

区别

说下对Promise的理解

一、Promise是什么?

二、Promise是为解决什么问题而产生的?

三、Promise的两个特点

四、Promise的三个缺点

五、Promise的用法

说下对模块导入导出的理解

箭头函数和普通函数的区别

Js实现约瑟夫环问题(m个人留1个或者留n-1个)

数组方法

递归方法

数组排序的几种写法

数组排序方法sort()排序

冒泡排序(两层循环,两两交换)

选择排序

插入排序


js数据类型有哪些

基本数据类型

        Number 数字类型

        String 字符串类型

        Boolean布尔类型

        undefined未定义

        null 空型

        Symbol 唯一值

引用数据类型

        数组

        函数

        对象

        Set

        Map

内置对象有哪些

        Math:数学对象,数学和函数相关的

        Date:日期对象,处理日期和时间

        Array:数组对象

        String:字符串对象

数组方法有哪些    

        1--unshift------添加元素,在数组最前边添加,返回数组的长度

        2--shift------删除元素,在数组最前边删除,返回删除的元素

        3--reverse------翻转数组,返回一个新数组,会改变原来的数组

        4--sort------排序,默认从大到小排序,改变原来的数组

        5--concat------拼接,如果参数是数组,则拼接数组;如果参数是非数组,在末尾添加元素。返回新数组,原数组不变

        6--slice(start,end)------截取,从索引start开始截取,到end结束,包括start不包括end,原数组不变

        7--splice(start,length)------截取,从索引start截取length个元素,原数组改变

        8--indexOf------查询某元素的索引,从前往后查找第一次出现的索引,没有返回-1

        9--lastIndexOf------查询某元素的索引,从后往前查找第一次出现的索引,没有返回-1

        10--join------转化,通过指定分隔符连接数组所有元素,返回字符串,默认用逗号分隔

        11--forEach------遍历数组,没有返回值

        12--some-----判断元素是否满足条件,有一个满足就返回true,都不满足返回false

        13--every-----判断元素是否满足条件,都满足就返回true,有一个不满足返回false

        14--map-----用于数学计算,返回数组

        15--filter------过滤元素,过滤出符合条件的元素,返回数组

数组去重几种方式

        1--双重for循环

var arrOld = [2, 3, 5, 4, 3, 2, 6, 8, 5, 4, 6, 2];
    var arrNew = [];
    var flag = true;
    for (var i = 0; i < arrOld.length; i++) {
      flag = true;
      for (var j = 0; j < arrNew.length; j++) {
        if (arrNew[j] == arrOld[i]) {
          flag = false;
        }
      }
      if (flag) {
        arrNew.push(arrOld[i]);
      }
    }
    console.log(arrNew);

        2--indexOf()方法

function unique(arrOld) {
  var arrNew = [];
  for (var i = 0; i < arrOld.length; i++) {
    if (arrNew.indexOf(arrOld[i]) === -1) {
    arrNew.push(arrOld[i])
    }
  }
  return arrNew;
}

        3--splice()方法

        4--filter()方法

function unique(arrOld) {
  return arrOld.filter(function(item, index, arrOld) {
    return arrOld.indexOf(item,0) === index;
  });
}

        5--includes()方法

function unique(arr) {
  if (!Array.isArray(arr)) {
    console.log('type error!')
    return
  }
  var array =[];
  for(var i = 0; i < arr.length; i++) {
    if( !array.includes( arr[i]) ) {
      array.push(arr[i]);
    }
  }
  return array
}

        6--利用对象属性不能重复的特点

var arrOld = [2, 3, 5, 4, 3, 2, 6, 8, 5, 4, 6, 2];
var arrNew = [];
var obj = {};
for (var i = 0; i < arrOld.length; i++) {
  obj[arrOld[i]] = 1;
}
for (x in obj) {
  arrNew.push(Number(x));
}
console.log(arrNew);

        7--利用Set结构成员不能重复的特点

function unique (arr) {
  return Array.from(new Set(arr))
}

        8--利用Map结构成员不能重复的特点

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值