JS和ES6常见面试题

js数据类型有哪些

1、基本类型:数字类型Number、字符串类型String、布尔类型Boolean、空型null、未定义undefined、唯一值Symbol(ES6)

2、引用类型:数组、函数、对象、Set(ES6)、Map(ES6

内置对象有哪些

JavaScript中的对象分为4种:内置对象、浏览器对象、自定义对象、DOM对象

数组方法有哪些

1push()添加,2pop() 删除,3unshift() 数组开头添加,4shift()开头删除

isArray()map()filter():返回符合条件的元素,every()检查符合条件的元素,返回布尔型

some()检查符合条件的元素,返回布尔型

splice()添加或删除元素,返回一个数组,slice()返回指定元素

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置

includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false

concat() 方法用于连接两个或多个数组。

join() 方法用于把数组中的所有元素放入一个字符串

split() 方法用于把一个字符串分割成字符串数组。

forEach() 方法用于数组循环

sort() 方法用于对数组的元素进行排序。

reverse() 方法用于颠倒数组中元素的顺序。

find() 方法返回通过测试(函数内判断)的数组的第一个元素的值

findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置

fill() 方法用于将一个固定值替换数组的元素

keys()是对键名的遍历、values()对键值的遍历、entries()是对键值对的遍历

数组去重几种方式

方法一:利用ES6 Set去重

方法二: 利用for嵌套for,然后splice去重

方法三:利用对象的属性不能相同的特点进行去重

方法四: 利用indexOf去重

方法五:利用Map数据结构去重

方法六: 利用递归去重

方法七:利用filter

数组深拷贝几种方式

1、for循环

    for (var i = 0; i < arr3.length; i++) {

      arr4.push(arr3[i])

    }

2、slice方法

    var arr5 = arr3.slice(0)

3、concat方法

    var arr6 = arr3.concat()

对象深拷贝几种方式

方法一:for循环方法

方法二: 使用JSON

方法三:jQuery.extend()方法

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

两种,settimeout是只执行一次,setInterval是一直执行

说下对Promise的理解

promise是一个构造函数,Promise是Es6新增的构造器,用来提优化异步代码的写法,Promise中文意为承诺,承诺它一段时间后返回给你最终的结果

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

导入:import 接收名称 from '模块标识符',导出export default 默认导出的成员,作用是方便,节省性能

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

箭头函数就是函数里套函数,箭头函数中的this指向包含建箭头的父级  在vue的methods中不可以直接用,写法简单

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

function countOff(num,m){

  let players=[];

  for(let i=1;i<=num;i++){

    players.push(i);

  }

  let flag=0;

  while(players.length>1){// 剩下一人,结束条件

    let outPlayerNum=0,len=players.length;

    for(let i=0;i<len;i++){

      flag++;

      if(flag===m){

        flag=0;

        console.log("出局:"+players[i-outPlayerNum]);

        players.splice(i-outPlayerNum,1);

        outPlayerNum++;

      }

    }

  }

  // return players[0];

  console.log("剩下:"+players[0]);

}

// console.log("剩下:"+find(100,5))

countOff(100,5)

数组排序的几种写法

1、sort排序

2、冒泡排序比较相邻的两个元素,如果前一个比后一个大,则交换位置(双重for循环)

猜你喜欢

转载自blog.csdn.net/m0_63349753/article/details/127953416