分享在日常开发中常用的ES6知识点【面试常考】

前言

在日常的业务开发中,可以熟悉运用掌握的知识点快速解决问题很重要。这篇分享JS相关的知识点,主要就是对数据的处理。

注意:本篇分享的知识点,只是起到一个抛砖引玉的作用,详情的使用和更多的ES6知识点还请参考官网。

1. 箭头函数

  • 特点:简洁语法,不绑定 thisarguments
  • 应用场景:回调函数、数组方法(如 mapfilter)。
// 传统函数
const list = [1, 2, 3];
const doubled = list.map(function(num) {return num * 2;
});// 箭头函数
const doubledES6 = list.map(num => num * 2);// 管理系统中过滤数据
const users = [{ id: 1, name: "Alice", status: "active" },{ id: 2, name: "Bob", status: "inactive" }
];const activeUsers = users.filter(user => user.status === "active");

2. 解构赋值

  • 特点:从数组或对象中提取值并赋值给变量。
  • 应用场景:提取列表项属性、参数解构。
// 数组解构
const [first, second] = ["Apple", "Banana"];
console.log(first); // "Apple"// 对象解构
const { name, age } = { name: "Alice", age: 30, role: "Admin" };
console.log(name); // "Alice"// 管理系统中提取表格行数据
const renderUserRow = ({ id, name, email }) => {return `<tr><td>${id}</td><td>${name}</td><td>${email}</td></tr>`;
};

3. 扩展运算符

  • 特点:展开数组或对象。
  • 应用场景:合并列表、复制数据、传递参数。
// 合并数组
const arr1 = [1, 2];
const arr2 = [...arr1, 3, 4]; // [1, 2, 3, 4]// 复制对象
const user = { name: "Alice" };
const newUser = { ...user, age: 30 }; // { name: "Alice", age: 30 }// 管理系统中更新列表项
const updateUser = (users, userId, updates) => {return users.map(user => user.id === userId ? { ...user, ...updates } : user);
};

4. 数组方法

  • 常用方法mapfilterreducefindfindIndexsomeevery
  • 应用场景:数据筛选、转换、聚合。
// map:转换数据格式
const users = [{ id: 1, name: "Alice" },{ id: 2, name: "Bob" }
];
const userNames = users.map(user => user.name); // ["Alice", "Bob"]// filter:筛选数据
const activeUsers = users.filter(user => user.status === "active");// reduce:计算总和
const total = [1, 2, 3].reduce((sum, num) => sum + num, 0); // 6// find:查找单个元素
const user = users.find(user => user.id === 1);// 管理系统中计算总价
const products = [{ id: 1, price: 10, quantity: 2 },{ id: 2, price: 20, quantity: 1 }
];
const totalPrice = products.reduce((sum, product) => sum + product.price * product.quantity,0
); // 40

5. 模板字符串

  • 特点:支持嵌入表达式、多行字符串。
  • 应用场景:动态生成 HTML 模板、拼接字符串。
// 基本用法
const name = "Alice";
const greeting = `Hello, ${name}!`; // "Hello, Alice!"// 多行字符串
const html = `<div class="user"><h2>${name}</h2><p>Age: ${age}</p></div>
`;// 管理系统中动态生成表格行
const renderTable = (users) => {return `<table>${users.map(user => `<tr><td>${user.id}</td><td>${user.name}</td></tr>`).join("")}</table>`;
};

6. Promise 与 async/await

  • 特点:处理异步操作,避免回调地狱。
  • 应用场景:列表数据的异步加载、分页。
// Promise 链式调用
fetchUsers().then(users => filterActiveUsers(users)).then(activeUsers => displayUsers(activeUsers)).catch(error => console.error(error));// async/await 写法
async function loadUsers() {try {const users = await fetchUsers();const activeUsers = filterActiveUsers(users);displayUsers(activeUsers);} catch (error) {console.error(error);}
}// 管理系统中分页加载数据
async function loadPage(pageNumber) {const response = await fetch(`/api/users?page=${pageNumber}`);const { data, totalPages } = await response.json();return { data, totalPages };
}

7. 解构赋值与默认值

  • 特点:支持设置默认值,避免 undefined 错误。
  • 应用场景:处理列表数据中的缺失字段。
// 对象解构默认值
const { name = "Guest", age = 18 } = { name: "Alice" };
console.log(age); // 18// 函数参数解构默认值
const displayUser = ({ name = "Guest", age = 18 } = {}) => {console.log(`${name} (${age})`);
};displayUser({ name: "Bob" }); // "Bob (18)"
displayUser(); // "Guest (18)"// 管理系统中处理API返回的不完整数据
const formatUser = (user) => {const { id, name = "Unnamed", status = "inactive" } = user;return `${id}: ${name} (${status})`;
};

8. Set 与 Map 数据结构

8.1 Set

基本概念
  • 定义Set 是一种无序且唯一的数据集合,类似于数组,但成员值都是唯一的。
  • 特点
    • 不允许重复值(自动去重)。
    • 可以存储任意类型的值(包括 NaN 和 undefined)。
    • 基于 SameValueZero 算法判断相等性(NaN 被视为与自身相等)。
常用方法
// 创建 Set
const set = new Set([1, 2, 2, 3]); // Set(3) {1, 2, 3}// 添加元素
set.add(4); // Set(4) {1, 2, 3, 4}// 判断元素是否存在
set.has(2); // true// 删除元素
set.delete(3); // Set(3) {1, 2, 4}// 获取大小
set.size; // 3// 清空 Set
set.clear(); // Set(0) {}// 遍历 Set
set.forEach(value => console.log(value));
for (const value of set) {console.log(value);
}
应用场景 
  • 数组去重
const numbers = [1, 2, 2, 3, 3, 3];
const uniqueNumbers = [...new Set(numbers)]; // [1, 2, 3]
  • 管理系统中的权限控制 
// 用户权限集合
const userPermissions = new Set(["view", "edit", "delete"]);// 检查用户是否有某个权限
const hasPermission = (permission) => userPermissions.has(permission);// 添加新权限
userPermissions.add("export");// 移除权限
userPermissions.delete("delete");
  • 统计列表中唯一元素的数量
// 统计活跃用户的唯一部门
const departments = users.map(user => user.department);
const uniqueDepartments = new Set(departments);
console.log(`共有 ${uniqueDepartments.size} 个不同部门`);

8.2 Map

基本概念
  • 定义Map 是一种键值对的集合,类似于对象,但键可以是任意类型(不限于字符串)。
  • 特点
    • 键的类型可以是任意值(对象、函数、基本类型等)。
    • 保持插入顺序(迭代时按插入顺序返回)。
    • 提供了直接操作键值对的方法(如 getsethas)。
常用方法
// 创建 Map
const map = new Map([["name", "Alice"],[1, "one"],[true, "yes"]
]);// 设置键值对
map.set("age", 30);// 获取值
map.get("name"); // "Alice"// 判断键是否存在
map.has(1); // true// 删除键值对
map.delete("age");// 获取大小
map.size; // 3// 清空 Map
map.clear();// 遍历 Map
map.forEach((value, key) => console.log(key, value));
for (const [key, value] of map) {console.log(key, value);
}
应用场景
  • 管理系统中的数据索引
// 用户 ID 到用户对象的映射
const userMap = new Map(users.map(user => [user.id, user]));// 快速查找用户
const getUserById = (id) => userMap.get(id); // O(1) 时间复杂度// 更新用户信息
const updateUser = (id, updates) => {const user = userMap.get(id);if (user) {userMap.set(id, { ...user, ...updates });}
};

9.小结

如果你认为es6有哪些知识点适用于日常的开发,欢迎在评论区和大家一起分享!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CHI协议验证中的异常及边界验证

CHI协议验证中的异常及边界验证 针对 CHI 协议的错误注入工具、覆盖率衡量方法及实际项目中的投入平衡 CHI 协议作为多核系统中复杂的缓存一致性协议,验证其行为需要强大的工具和方法来执行错误注入和边界条件测试,并衡量测试覆盖率。以下详细讨论常用工具、覆盖率评估方法及…

技术专栏|LLaMA家族——模型架构

LLaMA的模型架构与GPT相同&#xff0c;采用了Transformer中的因果解码器结构&#xff0c;并在此基础上进行了多项关键改进&#xff0c;以提升训练稳定性和模型性能。LLaMA的核心架构如图 3.14 所示&#xff0c;融合了后续提出的多种优化方法&#xff0c;这些方法也在其他模型&a…

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…

Go 语言实现高性能 EventBus 事件总线系统(含网络通信、微服务、并发异步实战)

前言 在现代微服务与事件驱动架构&#xff08;EDA&#xff09;中&#xff0c;事件总线&#xff08;EventBus&#xff09; 是实现模块解耦与系统异步处理的关键机制。 本文将以 Go 语言为基础&#xff0c;从零构建一个高性能、可扩展的事件总线系统&#xff0c;深入讲解&#…

npm ERR! @biomejs/biome@1.9.4 postinstall: `node scripts/postinstall.js`

npm install 报错如下, npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @biomejs/biome@1.9.4 postinstall: `node scripts/postinstall.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @biomejs/biome@1.9.4 postinstall script. npm ERR! This is pro…

APMPlus × veFaaS 一键开启函数服务性能监控,让函数运行全程可观测

资料来源&#xff1a;火山引擎-开发者社区 近年来&#xff0c;无服务器架构&#xff08;Serverless&#xff09;的崛起让开发者得以从基础设施的复杂性中解放&#xff0c;专注于业务逻辑创新。但随着采用率提升&#xff0c;新的问题开始出现——函数实例的短暂生命周期、动态变…

玛哈特零件矫平机:精密制造中的平整度守护者

在精密制造、模具、冲压、钣金加工、汽车零部件、航空航天以及电子设备等众多工业领域&#xff0c;零件的平整度&#xff08;Flatness&#xff09;是一项至关重要的质量指标。微小的翘曲、扭曲或弯曲都可能导致装配困难、功能失效、外观缺陷甚至影响整机性能。为了消除零件在加…

std::make_shared简化智能指针 `std::shared_ptr` 的创建过程,并提高性能(减少内存分配次数,提高缓存命中率)

std::make_shared 是 C 标准库中的一个函数模板&#xff0c;用于简化智能指针 std::shared_ptr 的创建过程。引入 std::make_shared 的主要原因是提高代码的安全性、性能和可读性。以下是详细分析&#xff1a; 1. 安全性提升 避免显式调用 new 导致的错误 在不使用 std::make…

JDK版本如何丝滑切换

一句话总结 》》》步骤分为&#xff1a; 下载对应JDK配置环境变量 下载JDK 如何下载JDK这里不必多提&#xff0c;提出一点&#xff0c;就是多个版本的JDK最好放在一个文件夹里&#xff08;忽略我的java文件夹&#xff0c;这里都是不同的jdk版本&#xff09;&#xff1a; 配置环…

Rust 通用代码生成器:莲花,红莲尝鲜版三十六,哑数据模式图片初始化功能介绍

Rust 通用代码生成器&#xff1a;莲花&#xff0c;红莲尝鲜版三十六&#xff0c;哑数据模式图片初始化功能介绍 Rust 通用代码生成器莲花&#xff0c;红莲尝鲜版三十六。支持全线支持图片预览&#xff0c;可以直接输出带图片的哑数据模式快速原型。哑数据模式和枚举支持图片。…

45. Jump Game II

目录 题目描述 贪心 题目描述 45. Jump Game II 贪心 正向查找可到达的最大位置 时间复杂度O(n) class Solution { public:int jump(vector<int>& nums) {int n nums.size();if(n 1)return 0;int cur_cover 0;int cover 0;int res 0;for(int i 0;i < …

model.classifier 通常指模型的分类头 是什么,详细举例说明在什么部位,发挥什么作用

model.classifier 通常指模型的分类头 是什么,详细举例说明在什么部位,发挥什么作用 在深度学习模型中,分类头(Classifier Head)是指模型末端用于完成分类任务的组件,通常是一个或多个全连接层(线性层)。它的作用是将模型提取的高层语义特征映射到具体的分类标签空间。…

机器学习+城市规划第十四期:利用半参数地理加权回归来实现区域带宽不同的规划任务

机器学习城市规划第十四期&#xff1a;利用半参数地理加权回归来实现区域带宽不同的规划任务 引言 在城市规划中&#xff0c;如何根据不同地区的地理特征来制定有效的规划方案是一个关键问题。不同区域的需求和规律是不同的&#xff0c;因此我们必须考虑到地理空间的差异性。…

Kivy的ButtonBehavior学习

Kivy的ButtonBehavior学习 ButtonBehavior 简介1、主要特点2、基本用法3、主要事件4、常用属性5、方法代码示例 文档&#xff1a;https://kivy.org/doc/stable/api-kivy.uix.behaviors.button.html#kivy.uix.behaviors.button.ButtonBehavior ButtonBehavior 简介 ButtonBeha…

WPS中将在线链接转为图片

WPS中将在线链接转为图片 文章目录 WPS中将在线链接转为图片一&#xff1a;解决方案1、下载图片&#xff0c;精确匹配&#xff08;会员功能&#xff09;2、将在线链接直接转为图片 一&#xff1a;解决方案 1、下载图片&#xff0c;精确匹配&#xff08;会员功能&#xff09; …

API:解锁数字化协作的钥匙及开放实现路径深度剖析

API:解锁数字化协作的钥匙及开放实现路径深度剖析 一、API 的概念与本质 (一)定义与基本原理 API(Application Programming Interface,应用程序编程接口)是一组定义、协议和工具,用于构建和集成软件应用程序。它如同一个精心设计的合约,详细规定了软件组件之间相互交…

Azure 虚拟机端口资源:专用 IP 和公共 IP Azure Machine Learning 计算实例BUG

## 报错无解 找不到Azure ML 计算实例关联的 NSG .env 文件和 ufw status&#xff1a; .env 文件中 EXPOSE_NGINX_PORT8080 是正确的&#xff0c;它告诉 docker-compose.yaml 将 Nginx 暴露在宿主机的 8080 端口。 sudo ufw status 显示 Status: inactive&#xff0c;意味着宿…

深入理解Python协程:async def、async for、await、yield详解

前言 在现代编程中&#xff0c;异步编程已成为提高程序效率和性能的重要方式。 Python 作为一种流行的编程语言&#xff0c;自然也提供了强大的异步编程支持。 本文将详细介绍 Python 中的协程&#xff0c;以及 async def、async for、await 和 yield 等关键字的使用。 协程简介…

基于功能基团的3D分子生成扩散模型 - D3FG 评测

D3FG 是一个在口袋中基于功能团的3D分子生成扩散模型。与通常分子生成模型直接生成分子坐标和原子类型不同&#xff0c;D3FG 将分子分解为两类组成部分&#xff1a;官能团和连接体&#xff0c;然后使用扩散生成模型学习这些组成部分的类型和几何分布。 一、背景介绍 D3FG 来源…

写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里

写一个shell脚本&#xff0c;把局域网内&#xff0c;把能ping通的IP和不能ping通的IP分类&#xff0c;并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…