js常见面试题

  1. js数据类型有哪些

基本类型:数字类型(NUMBER)、字符串类型(String)、布尔类型(Boolean)、空型(null)、未定义型(undef)、唯一值型(symbol)

引用数据类型:数组、函数、对象、set、map

  1. 内置对象有哪些

内置对象:数学对象Math、日期对象new Data()、数组对象new Array()、字符串对象new String()

数学对象:

Math.PI                        // 圆周率

Math.random()                // 生成随机数  (0-1)

Math.floor()                        // 向下取整

Math.ceil()                      / /向上取整

Math.round()                // 取整,四舍五入

Math.abs()                    // 绝对值

Math.max()                    // 求最大

Math.min()               //求最小值

日期对象:

var date = new Date()  //当前的时间

var year = date.getFullYear()  //获取年

var month = date.getMonth()+1  //获取月

var dates = date.getDate() // 获取日

var h = date.getHours() // 获取小时

var m = date.getMinutes() // 获取分钟

var s = date.getSeconds() // 获取秒

var ms = date.getMilliseconds() // 获取毫秒

var week = date.getDay(); //获取周

数组对象:

var arr = new Array()  //创建数组对象

判断是否是数组的方式:1、instanceof  2、Array.isArray(变量/值)

数组添减:1、前面添加unshift()  2、后面添加push()  3、去掉最后一个pop()  4、去掉第一个shift()

reverse 方法,数组翻转

sort方法,数组排序

concat方法,连接字符,拼接字符串,返回一个新数组不会改变原来的大小

slice 方法,选取数组的一部分,并返回一个新数组。

splice 方法,用于添加或删除数组中的元素

indexOf方法,从前往后找 找到最近的为止 然后输出索引值,如果寻找的值 在该数组中并不存在 则会输出-1

lastIndexOf方法,从后往前找 找到最近的为止 然后输出索引值,如果寻找的值 在该数组中并不存在 则会输出-1

join方法,数组转化为字符串,如果括号中什么都不加 也是默认以逗号隔开,如果添加符号 就会以添加的符号隔开

foreach 方法遍历数组

some 方法用以判断数组中某一项是否满足条件

every方法,判断数组中所有元素是否满足条件,返回boolean值

map方法,相当于中间处理函数,返回映射数组

filter方法,用于创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

find方法,返回通过测试(函数内判断)的数组的第一个元素的值。  findIndex 则是返回索引

字符串对象

indexOf方法,从前往后找 找到最近的为止 然后输出索引值,如果寻找的值 在该数组中并不存在 则会输出-1

lastIndexOf方法,从后往前找 找到最近的为止 然后输出索引值,如果寻找的值 在该数组中并不存在 则会输出-1

substr(start,length),从start位置开始(索引号),length取的个数

substring(start,end),从start位置开始,截取到end位置,end取不到,基本和slice相同,但是不接受负值。

concat(str1,str2,str3…),concat()方法用于连接两个或多个字符串。拼接字符串,等效于+,+更常用

slice(start,end),从start位置开始,街取到end位置,end取不到(他们俩都是索引号)

charAt(index),获取指定位置字符

trim(),去除字符串前后的空白

split(‘分隔符’), 字符转换为数组

replace(‘被替换的字符’,‘替换为的字符’),替换字符串

search(),检索位置,用于检索字符串中指定的子字符串,返回子字符串的起始位置

  1. 数组方法有哪些

join (原数组不受影响)

该方法可以将数组里的元素,通过指定的分隔符,以字符串的形式连接起来。返回值:返回一个新的字符串

split (原数组不受影响)

该方法是用过指定的分隔符,将字符串分割成数组。返回值:返回一个新的数组

push(改变原数组)

该方法可以在数组的最后面,添加一个或者多个元素;结构: arr.push(值);返回值:返回的是添加元素后数组的长度.

pop(改变原数组)

该方法可以在数组的最后面,删除一个元素;结构: arr.pop();返回值:返回的是刚才删除的元素

unshift(改变原数组)

该方法可以在数组的最前面,添加一个或者几个元素;结构: arr.unshift(值);返回值: 返回的是添加元素后数组的长度

shift(改变原数组)

该方法可以在数组的最前面,删除一个元素;结构: arr.shift();返回值: 返回的是刚才删除的元素

reverse 翻转数组(改变原数组)

结构:arr.reserse()

sort(改变原数组)

该方法可以对数组进行排序.默认从大到小,其中的参数是一个函数

concat(原数组不受影响)

该方法可以把两个数组里的元素拼接成一个新的数组;返回值: 返回拼接后的新数组

slice 截取(原数组不受影响)

slice(start,end)从start索引开始截取到end索引结束,包含start但不包含end,如果只有start会截取到结束,会返回一个新数组,但是不改变原数组

splice(改变原数组)

结构1: arr.splice(start,deletedCount) 纯删除;从start下标开始,删除deletedCount个

结构2:arr.splice(start,deletedCount,item) 替换;从start下标开始,删除几个,并在该位置添加item

结构3: arr.splice(start,0,item) 纯添加;从start下标开始,删除0个,并在该位置添加item,start开始全部往后移动

indexOf

该方法用来查找元素在数组中第一次出现的位置;结构: arr.indexOf(元素) 没有就返回-1

lastIndexOf

该方法用来查找元素在数组从后往前第一次出现的位置;结构: arr.lastIndexOf(元素) 没有就返回-1

forEach()

遍历数组

map()

遍历数组,map()的作用就是“映射”返回一个新数组,这个新数组:由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。一般用于数学计算

filter()

遍历数组,过滤数组的元素,并返回一个新的数组

some

遍历数组,判断数组中有没有符合条件的项(只要有,就返回true),如果一个都没有,才返回false

every

遍历数组,判断数组中所有的项是否满足要求,如果全都满足,才返回true,否则返回false

find

遍历数组,找到符合条件的第一个元素

findIndex

遍历数组,找到符合条件的第一个元素的索引

  1. 数组去重几种方式
  1. 定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。
  2. 先将原数组排序,在与相邻的进行比较,如果不同则存入新数组。
  3. 利用对象属性存在的特性,如果没有该属性则存入新数组。
  4. 利用数组的indexOf下标属性来查询。
  5. 利用数组原型对象上的includes方法。
  6. 利用数组原型对象上的 filter 和 includes方法。
  7. 利用数组原型对象上的 forEach 和 includes方法。
  8. 利用数组原型对象上的 splice 方法。
  9. 利用数组原型对象上的 lastIndexOf 方法。
  10. 利用 ES6的set 方法。
  1. 数组深拷贝几种方式

1、双层for循环实现

2、slice方法截取拷贝

3、concat方法拼接实现

4、ES6扩展运算符实现

对象深拷贝几种方式

1、通过JSON.stringify() 和 JSON.parse() 将对象转为字符串之后在转为对象。当值为undefined、function、symbol会在转换过程中被忽略。

2、es6解构赋值+拓展运算符,只能深度拷贝对象的第一层,如果对象中的属性也是对象的话,没有办法进行深度拷贝的

3、for in 循环遍历对象,只能深度拷贝对象的第一层

4、Object.assign() 对象的合并,第一个参数必须是空对象,只能深度拷贝对象的第一层

5、利用循环和递归的方式,在循环递归中需要注意设置临界值(typeof obj[key] == ‘object’),否则会造成死循环

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

分为setTimeout、setInterval、

setTimeout只执行一次、清除用clearTimerout

setInterval可以执行多次;清除用clearInterval

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

箭头函数比普通函数更加简洁

箭头函数没有自己的this,它只会在自己作用域的上一层继承this

箭头函数继承来的this指向永远不会改变

call()、apply()、bind()等方法不能改变箭头函数中this的指向

箭头函数不能作为构造函数使用

箭头函数没有自己的arguments

箭头函数没有prototype

数组排序的几种写法

利用sort()方法排序

冒泡排序法

选择排序法:选一个最大或最小的进行比较排序

插入排序法:选定一个数据,遍历数组不断比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟小宇要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值