分享在日常開發中常用的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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84628.shtml
英文地址,請注明出處:http://en.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…