js-数组面试题



 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8" />
 <title></title>
 </head>
 <body>
 <script>
 //完成以下代码段,实现b数组对a数组的拷贝,方法越多越好
 var a=[1,"yes",3],
 b;
 // 1.数组遍历,push
 // b=new Array();
 // for(var i=0;i<a.length;i++){
 // b.push(a[i])
 // }
  
 // 2.concat() 连接两个或多个数组
 // b=[].concat(a)
  
 // 3.slice()
 b=a.slice(0)
 console.log(b)
 </script>
 </body>
 </html>
 
  
 
### 常见 JavaScript 数组面试题及解答 #### 1. 如何判断一个变量是否是数组? 在 JavaScript 中,判断一个变量是否是数组可以使用 `Array.isArray()` 方法。该方法返回一个布尔值,表示传入的参数是否是数组类型。例如: ```javascript Array.isArray([1, 2, 3]); // true Array.isArray("string"); // false ``` #### 2. 如何实现数组去重? JavaScript 中可以通过多种实现数组去重。一种常见的式是利用 `Set` 数据结构,它只存储唯一的值。例如: ```javascript function removeDuplicates(arr) { return [...new Set(arr)]; } console.log(removeDuplicates([1, 2, 2, 3])); // [1, 2, 3] ``` #### 3. 如何查找数组中的最大值? 查找数组中的最大值可以通过 `Math.max()` 函数结合展开运算符来实现。例如: ```javascript const numbers = [1, 2, 3, 4, 5]; const max = Math.max(...numbers); // 5 ``` #### 4. 如何实现数组的深拷贝数组的深拷贝可以通过 `JSON.parse()` 和 `JSON.stringify()` 的组合实现。这种方法适用于数组包含函数或 `undefined` 等特殊值的情况。例如: ```javascript const original = [1, 2, [3, 4]]; const copy = JSON.parse(JSON.stringify(original)); copy[2][0] = 5; console.log(original); // [1, 2, [3, 4]] console.log(copy); // [1, 2, [5, 4]] ``` #### 5. 如何合并两个数组? 合并两个数组可以使用展开运算符 `...` 或者 `concat()` 方法。例如: ```javascript const arr1 = [1, 2]; const arr2 = [3, 4]; const merged = [...arr1, ...arr2]; // [1, 2, 3, 4] ``` #### 6. 如何实现数组的扁平化? 扁平化数组可以通过递归和 `reduce()` 方法实现。例如: ```javascript function flatten(arr) { return arr.reduce((result, item) => { return result.concat(Array.isArray(item) ? flatten(item) : item); }, []); } console.log(flatten([1, [2, [3, 4], 5]])); // [1, 2, 3, 4, 5] ``` #### 7. 如何实现数组的过滤? 可以使用 `filter()` 方法根据条件过滤数组中的元素。例如: ```javascript const numbers = [1, 2, 3, 4, 5]; const even = numbers.filter(num => num % 2 === 0); // [2, 4] ``` #### 8. 如何实现数组的排序? 数组的排序可以通过 `sort()` 方法实现。默认情况下,`sort()` 按字符串顺序排序。如果需要按数字排序,则需要传入一个比较函数。例如: ```javascript const numbers = [3, 1, 4, 2]; numbers.sort((a, b) => a - b); // [1, 2, 3, 4] ``` #### 9. 如何实现数组的分组? 可以通过 `reduce()` 方法数组中的元素按特定条件分组。例如,按对象的某个属性分组: ```javascript const people = [ { name: &#39;Alice&#39;, age: 20 }, { name: &#39;Bob&#39;, age: 20 }, { name: &#39;Charlie&#39;, age: 30 } ]; const grouped = people.reduce((acc, person) => { if (!acc[person.age]) { acc[person.age] = []; } acc[person.age].push(person); return acc; }, {}); console.log(grouped); // { // &#39;20&#39;: [ { name: &#39;Alice&#39;, age: 20 }, { name: &#39;Bob&#39;, age: 20 } ], // &#39;30&#39;: [ { name: &#39;Charlie&#39;, age: 30 } ] // } ``` #### 10. 如何实现数组的交集? 可以通过 `filter()` 和 `includes()` 方法实现两个数组的交集。例如: ```javascript const arr1 = [1, 2, 3]; const arr2 = [2, 3, 4]; const intersection = arr1.filter(item => arr2.includes(item)); // [2, 3] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值