js - 面试题
js面试题
数组
原生方法
Array.push( ) 给数组添加元素
Array.pop( ) 删除并返回数组的最后一个元素
Array.shift( ) 将元素移出数组
Array.unshift( ) 在数组头部插入一个元素
Array.concat( ) 连接数组
Array.join( ) 将数组元素连接起来以构建一个字符串
Array.length 数组的大小
Array.reverse( ) 颠倒数组中元素的顺序
Array.slice( ) 返回数组的一部分
Array.sort( ) 对数组元素进行排序
Array.splice( ) 插入、删除或替换数组的元素
Array.toLocaleString( ) 把数组转换成局部字符串
Array.toString( ) 将数组转换成一个字符串
forEach和map的区别
- 相同点
都是循环遍历数组中的每一项
forEach和map方法里每次执行匿名函数都支持3个参数,参数分别是item(当前每一项)、index(索引值)、arr(原数组)
匿名函数中的this都是指向window
只能遍历数组
都有兼容问题
- 不同点
map速度比foreach快
map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组,
map因为返回数组所以可以链式操作,foreach不能
一行代码实现数组去重?
[...new Set([1,2,3,1,'a',1,'a'])]
对象
原生方法
Object.hasOwnProperty( ) 检查属性是否被继承
Object.isPrototypeOf( ) 一个对象是否是另一个对象的原型
Object.propertyIsEnumerable( ) 是否可以通过for/in循环看到属性
Object.toLocaleString( ) 返回对象的本地字符串表示
Object.toString( ) 定义一个对象的字符串表示
Object.valueOf( ) 指定对象的原始值
判断两个对象相等
JSON.stringify(obj)==JSON.stringify(obj);//true