interview
javascript-frontend-basics
JavaScript 的数组有哪些原生方法

前端 JavaScript 基础面试题, JavaScript 的数组有哪些原生方法?

前端 JavaScript 基础面试题, JavaScript 的数组有哪些原生方法?

QA

Step 1

Q:: JavaScript 的数组有哪些原生方法?

A:: JavaScript 的数组有许多原生方法,常用的包括:

1. **push()**: 在数组末尾添加一个或多个元素,并返回数组的新长度。 2. **pop()**: 删除数组最后一个元素,并返回该元素的值。 3. **shift()**: 删除数组的第一个元素,并返回该元素的值。 4. **unshift()**: 在数组开头添加一个或多个元素,并返回数组的新长度。 5. **concat()**: 合并两个或多个数组,并返回一个新的数组。 6. **slice()**: 返回一个从开始到结束(不包括结束)的选定元素的新数组。 7. **splice()**: 添加/删除数组中的元素,并返回被删除的元素。 8. **forEach()**: 为数组中的每个元素执行一次提供的函数。 9. **map()**: 创建一个新数组,其结果是该数组中的每个元素调用一个提供的函数。 10. **filter()**: 创建一个新数组,其中包含所有通过提供的函数实现的测试的数组元素。 11. **reduce()**: 将数组中的每一个值(从左到右)缩减为一个值。 12. **find()**: 返回数组中满足提供的测试函数的第一个元素的值。 13. **findIndex()**: 返回数组中满足提供的测试函数的第一个元素的索引。 14. **indexOf()**: 返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回 -115. **lastIndexOf()**: 返回在数组中可以找到一个给定元素的最后一个索引,如果不存在,则返回 -116. **includes()**: 判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false。

用途

面试这个内容的目的是为了评估候选人对 JavaScript 数组方法的掌握程度。数组是 JavaScript 中最常用的数据结构之一,了解并能够有效使用这些方法对于解决日常的开发任务至关重要。比如在实际生产环境中,你可能需要对数据集进行排序、过滤、聚合等操作,这时就会用到这些数组方法。此外,这些方法的理解也反映了候选人对函数式编程、异步操作等更复杂概念的理解,这些概念在现代前端开发中非常重要。\n

相关问题

🦆
JavaScript 的数组和对象有什么区别?

数组是一个有序集合,其元素可以通过索引来访问。对象是一个无序集合,其元素通过键(key)来访问。数组适合用于存储同类型的元素,而对象更适合用于存储键值对。在实际使用中,当需要对元素进行排序或使用循环遍历时,通常选择数组;当需要表示更复杂的数据结构时,通常使用对象。

🦆
如何实现数组去重?

数组去重可以使用多种方法,如:

1. **使用 Set**: const uniqueArray = [...new Set(array)]; 2. **使用 filter 和 indexOf**: const uniqueArray = array.filter((item, index) => array.indexOf(item) === index); 3. **使用 reduce**: const uniqueArray = array.reduce((acc, item) => acc.includes(item) ? acc : [...acc, item], []); 这些方法利用了 JavaScript 的特性,如 Set 是一种数据结构,它只允许存储唯一的值。

🦆
如何在 JavaScript 中合并两个数组?

可以使用 concat()** 方法或 **扩展运算符(... 来合并两个数组。例如:

1. const mergedArray = array1.concat(array2); 2. const mergedArray = [...array1, ...array2]; 两种方法都可以创建一个新数组,其中包含了两个数组的元素。

🦆
如何深拷贝一个数组?

深拷贝一个数组可以使用多种方法,如:

1. **使用 JSON.parse 和 JSON.stringify**: const deepCopyArray = JSON.parse(JSON.stringify(array)); 2. **递归拷贝**: 编写一个递归函数,遍历数组的每一层并创建新的子数组。 3. **使用 Lodash 的 cloneDeep**: const deepCopyArray = _.cloneDeep(array); 这些方法各有优缺点,比如 JSON 方法在处理嵌套对象时很方便,但无法处理函数和 undefined。

🦆
JavaScript 中的 forEach 和 map 有什么区别?

forEach 和 map 都是用于遍历数组的,但是它们有本质的区别:

1. **forEach**: 只会遍历数组,并对每个元素执行提供的函数,不会返回新数组。 2. **map**: 不仅会遍历数组,还会根据提供的函数创建一个新数组,并返回该数组。 因此,当你需要改变数组的每个元素并返回新的数组时,应该使用 map;如果只需要执行副作用(如日志记录)而不需要返回值,可以使用 forEach。