当前位置: 首页 > news >正文

[面试] js 数组面试题

如何合并多个数组? 扩展运算符 concat()

// 使用扩展运算符:
const merged = [...arr1, ...arr2]; // ES6+// 使用 concat():
const merged = arr1.concat(arr2);

如何实现数组去空项? filter(Boolean)

const arr = [1, undefined, 2, null, 3, '', 4];
const compact = arr.filter(Boolean); // [1, 2, 3, 4]

如何实现数组去假值? filter(Boolean)

const arr = [0, false, null, undefined, '', NaN, 1, 2];
const truthyOnly = arr.filter(Boolean); // [1, 2]

如何实现数组交集、并集、差集?

const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];// 交集
const intersection = arr1.filter(x => arr2.includes(x)); // [2, 3]// 并集
const union = [...new Set([...arr1, ...arr2])]; // [1, 2, 3, 4]// 差集(arr1 - arr2)
const difference = arr1.filter(x => !arr2.includes(x)); // [1]

includes 和 indexOf 的区别?

includes 能区分NaN,返回类型是Boolean
indexOf不能区分NaN, 返回类型是索引/-1
在这里插入图片描述

[1, 2, NaN].includes(NaN); // true
[1, 2, NaN].indexOf(NaN);  // -1(错误识别)

如何对对象数组按字段排序

sort((a, b) => a.age - b.age)

如何找到数组中的最大数字 Math.max(…arr)

function findLargest(arr) {return Math.max(...arr);
}

如何找到数组中的第二大数字? 排序+[1]

function secondLargest(arr) {let sorted = arr.sort((a, b) => b - a);return sorted[1];
}

如何从数组中删除重复项? […new Set(arr)]

function removeDuplicates(arr) {return [...new Set(arr)];
}

如何合并两个排序数组? concat+sort

输入: [1, 3, 5], [2, 4, 6]
输出: [1, 2, 3, 4, 5, 6]
function mergeArrays(arr1, arr2) {return arr1.concat(arr2).sort((a, b) => a - b);
}

如何检查两个数组是否相等

function arraysEqual(arr1, arr2) {
// 长度不相等,直接返回if (arr1.length !== arr2.length) return false;// 循环,有一项不等就返回for (let i = 0; i < arr1.length; i++) {if (arr1[i] !== arr2[i]) return false;}return true;
}

如何找到数组中所有和为特定值的对?

给定一个整数数组和一个目标和,编写一个函数来查找数组中所有和为目标和的数字对。每对都应该是唯一的,并且对中数字的顺序无关紧要。

输入: [1, 2, 4, 3, 5, 7, 8, 9], Target = 10
输出: [[3, 7], [2, 8], [1, 9]]

解析:和两数之和差不多,两数之和要返回每对的下标,所以存在Map中,key是每一项,value是下标; 当前题目不返回下标,返回每一项,所以用Set就行

function findPairs(arr, target) {let result = [];let set = new Set();for (let num of arr) {// 可以在集合中找到 (特定值-当前项 )let complement = target - num;if (set.has(complement)) {result.push([num, complement]);}// 添加到集合中set.add(num);}return result;
}

参考:

【原生JS】 前端JS数组最常用 20 道面试题总结(含详细代码解析)

JavaScript 数组面试题


文章转载自:
http://admitted.lbooon.cn
http://attila.lbooon.cn
http://caloric.lbooon.cn
http://braver.lbooon.cn
http://bigger.lbooon.cn
http://asparagus.lbooon.cn
http://chagigah.lbooon.cn
http://agrologist.lbooon.cn
http://asepsis.lbooon.cn
http://balefulness.lbooon.cn
http://chrismal.lbooon.cn
http://belial.lbooon.cn
http://casuistic.lbooon.cn
http://belibel.lbooon.cn
http://childbearing.lbooon.cn
http://biloculate.lbooon.cn
http://bridle.lbooon.cn
http://amyl.lbooon.cn
http://boatmanship.lbooon.cn
http://basined.lbooon.cn
http://benlate.lbooon.cn
http://brunt.lbooon.cn
http://albertine.lbooon.cn
http://anticommute.lbooon.cn
http://benevolently.lbooon.cn
http://brigade.lbooon.cn
http://ascorbate.lbooon.cn
http://atonality.lbooon.cn
http://asthma.lbooon.cn
http://beatles.lbooon.cn
http://www.dtcms.com/a/280557.html

相关文章:

  • LangChain智能体开发实战:从零构建企业级AI助手
  • Ubuntu18.04 系统重装记录
  • Flutter 入门指南:从基础到实战
  • 22.计算指定范围内数字的幂次和
  • 【深度学习优化算法】06:动量法
  • Apriori 原理:快速筛选频繁出现的症状组合
  • B/S架构系统角色与对应协议详解
  • 《C++模板高阶机制解析:非类型参数、特化设计与分离编译实践》
  • CG--类比推理
  • IPsec:网络层的加密盾牌与HTTPS的差异解析
  • 尚庭公寓-----day1----逻辑删除功能
  • URL 转静态 HTML 文件 API 数据接口
  • GaussDB 数据库字符编码与兼容模式
  • 华大单片机HC32L110烧录程序方法
  • QT链接ACCESS数据库
  • Oracle 索引实战教程
  • Rust基础[part4]_基本类型,所有权
  • 编译原理第一到三章(知识点学习/期末复习/笔试/面试)
  • 正则表达式使用示例
  • 【canal+mysql+example+数据验证测试】
  • 从 0 到 1 掌握 自研企业级分布式 ID 发号器
  • C 语言(二)
  • GaussDB 数据库架构师修炼(三) 集群管理概览
  • Kafka 4.0 技术深度解析
  • 现代CSS实战:用变量与嵌套重构可维护的前端样式
  • Go 错误处理全解析:从 error 到 panic
  • Go 包管理工具详解:安装与使用指南
  • 【轨物方案】当补贴退潮,光伏电站如何回归价值本质?
  • 上公网-从内网到公网
  • 李宏毅《生成式人工智能导论》 | 第9讲 AI Agent