前端修习浩如烟海,受 “奥多姆剃刀原理” 启发,为遵循“如无必要 勿增实体”,我开辟了《面向面试学前端》诸篇系列,旨在学习更必要和高频的知识点,并由点及面、细粒度、渐进式地,构建精简实用的前端知识图谱体系。
本文是面向初级前端的入门级文章,如果觉得涉及知识过浅可以不看,也欢迎大佬交流和斧正
JS面试题(一)—— 数组方法归纳大全(ES5、ES6+)
方法名 | 作用 | 返回值 | |
---|---|---|---|
-- | -- | -- | |
以下是改变原数组的方法 | |||
-- | -- | -- | |
1 | push() | 在数组末尾添加一个或多个元素 | 返回数组新length |
2 | pop() | 从数组中删除最后一个元素 | 返回被删元素的值 |
3 | shift() | 从数组中删除第一个元素 | 返回被删元素的值 |
4 | unshift() | 在数组开头添加一个或多个元素 | 返回数组新length |
5 | splice() | 对数组进行增删改操作 | 以数组形式返回被修改的内容 |
6 | reverse() | 颠倒数组顺序 | 反转后的数组 |
7 | sort() | 对数组排序 | 排序后的数组 |
8 | forEach() | 遍历数组并批量操作 | undefined |
-- | -- | -- | |
以下是返回新数组的方法 | |||
-- | -- | -- | |
1 | map() | 对数组项进行处理映射 | 返回处理后映射的数组 |
2 | filter() | 对数组项进行条件筛选过滤 | 返回过滤后的新数组 |
3 | concat() | 对数组项进行合并 | 返回合并后的新数组 |
4 | slice() | 对数组进行截取后的浅拷贝(包含 begin、不包含end) | 返回截取后的浅拷贝新数组 |
5 | flat() | 数组扁平化 (Infinity 关键字作为参数时,无论多少层嵌套,都会转为一维数组) | 返回扁平化后的新数组 |
6 | Array.from() | 对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。 | 返回一个新的数组实例 |
-- | -- | -- | |
以下是 既不改变原数组、也不返回新数组 的方法 | |||
-- | -- | -- | |
1 | at() | 接收一个整数值,并返回该索引对应的元素 | 返回索引对应的元素,找不到则返回 undefined |
2 | indexOf() | 搜索 某元素 并返回第一个匹配的索引 | 返回第一个匹配的索引,找不到则返回 -1 |
3 | lastIndexOf() | indexOf()的逆向索引 | 返回从末尾开始 第一个匹配的索引,找不到则返回 -1 |
4 | find() | 找到满足条件的第一个值 | 返回该值 |
5 | findLast() | 找到满足条件的最后一个值 | 返回该值 |
6 | findIndex() | 找到满足条件的第一个值索引 | 返回该索引号,找不到则返回 -1 |
7 | findLastIndex() | 找到满足条件的最后一个值索引 | 返回该索引号,找不到则返回 -1 |
8 | includes() | 判断一个数组是否包含一个指定的值 | 如果包含则返回 true,否则返回 false。 |
9 | join() | 数组转字符串 | 返回字符串 |
10 | toString() | 数组转字符串 | 返回字符串 |
11 | every() | 对数组项进行校验,只要有一项通过了就返回true | boolean |
12 | some() | 对数组项进行校验,所有项都通过了才返回true | boolean |
13 | reduce() | 递归调处理 | 返回的最后一次递归回调的返回值 |
14 | reduceRight() | 类似于reduce(),数组从右往左递归 | 返回的最后一次递归回调的返回值 |
15 | Array.isArray() | 用于确定传递的值是否是一个 Array | 是则返回 true,否则返回 false。 |
16 | keys() | 返回一个包含数组中每个索引键的 Array Iterator 对象。 | 一个新的 Array 迭代器对象。 |
17 | values() | 返回一个包含数组中每个索引值的 Array Iterator 对象。 | 一个新的 Array 迭代器对象。 |
18 | entries() | [0, 'a'] | 返回一个新的 Array 迭代器对象。 |