15個非常實用的JavaScript技巧,提高你的開發效率

本文我們將探討15個實用的JavaScript技巧,希望它們可以幫你提高開發效率,有用的話點贊收藏~。

1. 反轉字符串

你有時候可能需要將字符串顛倒過來。在JavaScript中,有一個巧妙的一行代碼可以實現這個目標:

const reversedString = str.split('').reverse().join('');

這段代碼首先將字符串拆分為字符數組,然后顛倒字符的順序,最后將它們重新連接成一個字符串。這個技巧在處理文本數據時非常有用。

2. 數組求和

計算數組中元素的總和是常見的任務,而JavaScript中的reduce()方法能夠輕松勝任此任務。reduce()方法遍歷數組中的每個元素,并將它們累積為一個值,例如計算數組元素的總和:

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((total, number) => total + number, 0);
console.log(sum); // 15

在這個示例中,我們使用reduce()方法和一個回調函數,將數組元素累積到total中,并返回總和。

3. 尋找數組中的最大和最小值

尋找數組中的最大和最小值是常見的任務,而JavaScript提供了一種簡單的方法來實現:

const numbers = [11, 2, 9, 6, 19];
console.log(Math.max(...numbers)); // 19
console.log(Math.min(...numbers)); // 2

這里我們使用了展開運算符...將數組中的元素傳遞給Math.max()Math.min()方法,它們分別返回數組中的最大和最小值。

4. 從數組中刪除重復項

有時候你需要從數組中去除重復的值。在JavaScript中,你可以使用Set對象和展開運算符來輕松實現:

const numbers = [2, 3, 7, 7, 2];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // [2, 3, 7]

通過創建一個新的Set對象并將數組作為參數傳遞,你可以確保只保留唯一的值,然后使用展開運算符將Set轉換回數組。

5. 遍歷對象

使用Object.entries()方法,你可以獲取一個對象的鍵值對數組,然后遍歷對象的屬性并對其進行操作:

const person = {name: 'Rabi Siddique',age: 25,city: 'Gujranwala'
};
for (const [key, value] of Object.entries(person)) {console.log(`${key}: ${value}`);
}

在這個示例中,我們有一個包含姓名、年齡和城市屬性的對象。我們使用Object.entries()方法創建鍵值對數組,然后使用for...of循環來迭代數組,將鍵值對解構為變量keyvalue,最后使用模板字面量將它們輸出到控制臺。

6. 復制到剪貼板

通過Clipboard API,在JavaScript中將文本復制到剪貼板變得非常簡單:

function copyToClipboard(text) {navigator.clipboard.writeText(text);
}

在這個函數中,我們調用navigator.clipboard.writeText()方法并傳遞文本參數,將文本內容寫入剪貼板。

7. 檢測在線/離線狀態

要檢查用戶在Web應用中的在線/離線狀態,你可以使用navigator.onLine屬性:

if (navigator.onLine) {console.log('用戶在線');
} else {console.log('用戶離線');
}

這個屬性返回一個布爾值,指示瀏覽器當前是在線還是離線狀態。

8. 去除假值

在JavaScript中,你可以使用filter()方法來從數組中刪除假值,這些假值包括false0、空字符串''nullundefinedNaN

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

在這個示例中,我們將Boolean作為filter()的回調函數,Boolean()是JavaScript中的一個內置函數,對于真值返回true,對于假值返回false。通過傳遞Boolean作為回調函數,filter()將從數組中刪除所有假值,并返回一個僅包含真值的新數組filteredArr

9. 展開數組

為了展平JavaScript中的多維數組,你可以使用flat()方法。flat()方法創建一個新數組,將所有子數組元素遞歸連接到指定深度:

const multiDimensionalArray = [[1, 2], [3, 4, [5, 6]]];
const flattenedArray = multiDimensionalArray.flat(2);
console.log(flattenedArray); // 輸出: [1, 2, 3, 4, 5, 6]

在這個示例中,multiDimensionalArray是一個包含兩個嵌套數組的二維數組。通過調用flat()方法并指定深度為2,所有子數組元素都被連接到一個單一的數組中,生成flattenedArray,其中包含原始多維數組的所有元素。

10. 訪問自定義屬性

在HTML中,數據屬性提供了一種在元素中存儲額外數據的方法

。要在JavaScript中訪問這些數據屬性,你可以使用元素的dataset屬性:

<div id="myDiv" data-name="Rabi Siddique" data-age="25"></div>

要訪問div元素的data-namedata-age屬性,你可以使用以下JavaScript代碼:

const myDiv = document.getElementById('myDiv');
const name = myDiv.dataset.name;
const age = myDiv.dataset.age;
console.log(name); // "Rabi Siddique"
console.log(age); ?// "25"

在這個示例中,myDiv.dataset返回一個包含div元素上所有自定義數據屬性值的對象。我們可以通過使用屬性名作為dataset對象的屬性,訪問特定的數據屬性。

11. 從可迭代對象創建數組

Array.from()是JavaScript中的一個內置方法,它可以從可迭代對象或類似數組的對象創建一個新數組:

// 將字符串轉換為數組
const str = "Rabi";
const arr = Array.from(str);
console.log(arr); // 輸出: ["R", "a", "b", "i"]
?
// 將Set轉換為數組
const set = new Set([1, 2, 3, 3, 4, 5]);
const arr = Array.from(set);
console.log(arr); // 輸出: [1, 2, 3, 4, 5]

這個方法可以用來將不同的數據結構,如字符串、Set和Map,轉換成數組。

12. 數組解構

數組解構賦值是一種從數組或對象中提取值并將其分配給變量的方法,它使代碼更簡潔、可讀性更高。例如,考慮以下數組:

const numbers = [1, 2, 3, 4, 5];

與其使用索引訪問每個元素,我們可以使用解構賦值來提取特定的值:

const [first, second, , fourth] = numbers;
?
console.log(first); // 1
console.log(second); // 2
console.log(fourth); // 4

在這個示例中,我們使用方括號創建一個與數組形狀匹配的模式,模式中的逗號允許我們跳過我們不感興趣的元素。然后,我們將提取的值分配給新變量(firstsecondfourth)。

13. 對象解構

對象解構賦值也非常有用,允許我們從對象中提取屬性值并將其分配給變量:

const person = {name: 'Rabi Siddique',age: 25,email: 'rabi@example.com'
};
?
const {name, age, email} = person;
?
console.log(name); // 'Rabi Siddique'
console.log(age); // 25
console.log(email); // 'rabi@example.com'

在這個示例中,我們使用大括號創建一個模式,該模式匹配對象的形狀。變量名(nameageemail)匹配對象的屬性名,因此相應的值被提取并分配給這些變量。

14. Promise.all()

Promise.all()允許多個Promise并行執行。它接受一個Promise數組作為輸入,并返回一個新的Promise,該新Promise在數組中的所有Promise都解決時解決。

const promise1 = fetch('https://api.example.com/data1');
const promise2 = fetch('https://api.example.com/data2');
?
Promise.all([promise1, promise2]).then(responses => {// 在這里處理兩個請求的響應const response1 = responses[0];const response2 = responses[1];// 對響應進行操作}).catch(error => {// 處理任何請求的錯誤console.error(error);});

在這個示例中,我們使用fetch()方法創建兩個Promise來獲取來自不同端點的數據。我們將這些Promise放入Promise.all(),當所有Promise都完成時,我們可以在then()塊中處理響應。如果任何一個Promise被拒絕,catch()塊將處理錯誤。

15. 檢測鼠標右鍵點擊事件

要檢測鼠標右鍵點擊事件,你可以監聽contextmenu事件,這個事件在用戶右鍵點擊元素時觸發。以下是一個示例代碼段,當用戶右鍵點擊文檔時,將消息記錄到控制臺:

document.addEventListener('contextmenu', (event) => {event.preventDefault(); // 阻止默認的上下文菜單出現console.log('檢測到右鍵點擊事件!');
});

在這個示例中,我們使用addEventListener方法將contextmenu事件監聽器添加到document對象上。當事件觸發時,回調函數被執行,我們通過調用event對象上的preventDefault()方法來阻止默認上下文菜單的顯示,然后將消息記錄到控制臺,指示檢測到了右鍵點擊事件。

檢測鼠標右鍵點擊事件的一個有趣用途是創建自定義上下文菜單。例如,你可以禁用瀏覽器的默認上下文菜單,然后創建自己的菜單,它將在用戶右鍵點擊你的網站的特定元素或區域時顯示。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/710721.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/710721.shtml
英文地址,請注明出處:http://en.pswp.cn/news/710721.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sheng的學習筆記-卷積神經網絡經典架構-LeNet-5、AlexNet、VGGNet-16

目錄&#xff1a;目錄 看本文章之前&#xff0c;需要學習卷積神經網絡基礎&#xff0c;可參考 sheng的學習筆記-卷積神經網絡-CSDN博客 目錄 LeNet-5 架構圖 層級解析 1、輸入層&#xff08;Input layer&#xff09; 2、卷積層C1&#xff08;Convolutional layer C1&…

Dockerfile(5) - CMD 指令詳解

CMD 指定容器默認執行的命令 # exec 形式&#xff0c;推薦 CMD ["executable","param1","param2"] CMD ["可執行命令", "參數1", "參數2"...]# 作為ENTRYPOINT的默認參數 CMD ["param1","param…

VUE3自定義文章排行榜的簡單界面

文章目錄 一、代碼展示二、代碼解讀三、結果展示 一、代碼展示 <template><div class"article-ranking"><div class"header"><h2 class"title">{{ title }}</h2></div><div class"ranking-list&qu…

根據A(String)字段去重,并且選擇B(Ingter)字段最大的值

數據格式&#xff1a; [SkillDTO(Job電線工, rankGrade高級工, r4), SkillDTO(Job監察員, rankGrade技師, r5), SkillDTO(Job監察員, rankGrade高級工, r4), SkillDTO(skillJob監察員, rankGrade中級工, r3)] List<SkillDTO> resultList SkillDTOList.stream().coll…

電子技術——PN結電流關系方程

電子技術——PN結電流關系方程 平衡狀態下的PN結 平衡狀態下的PN結界面總共有兩種電流&#xff0c;一種為 擴散電流 另一種為 漂移電流 。兩種電流形成的平衡區域稱為 耗散區 。 在平衡狀態擴散電流等于漂移電流&#xff0c;此時靜電流為0&#xff0c;PN結外部沒有電流&…

Java SPI:Service Provider Interface

SPI機制簡介 SPI&#xff08;Service Provider Interface&#xff09;&#xff0c;是從JDK6開始引入的&#xff0c;一種基于ClassLoader來發現并加載服務的機制。 一個標準的SPI&#xff0c;由3個組件構成&#xff0c;分別是&#xff1a; Service&#xff1a;是一個公開的接口…

Java ElasticSearch面試題

Java ElasticSearch面試題 前言1、ElasticSearch是什么&#xff1f;2. 說說你們公司ES的集群架構&#xff0c;索引數據大小&#xff0c;分片有多少 &#xff1f;3. ES的倒排索引是什么&#xff1f;4. ES是如何實現 master 選舉的?5. 描述一下 ES索引文檔的過程&#xff1a;6、…

Centos系統(Linux)掛載硬盤/數據盤詳細操作和開機自動掛載的兩種方式

前提&#xff1a;已經做好磁盤陣列&#xff0c;將磁盤劃分好 磁盤初始化操作步驟&#xff08;如果已經可以正常掛載可跳過)&#xff1a; 使用fdisk -l命令查看多出來的大容量的磁盤名稱&#xff08;如果多塊磁盤&#xff0c;查看需要掛載的磁盤名稱&#xff09;&#xff0c;一…

embedding的原理和結構

embedding(向量化)是一個將數據轉化為向量矩陣的過程&#xff0c;作用是&#xff1a;將高維稀疏向量轉化為稠密向量&#xff0c;從而方便下游模型處理 簡單的概念大家應該都知道了&#xff0c;以LLM為例 輸入&#xff1a;文字 模型&#xff1a;embedding 輸出&#xff1a;向量…

c++高精度乘法的原理及c++代碼講解

高精度乘法的原理主要是利用數學中乘法的基本原理&#xff0c;將大整數拆分成各個位數的相乘&#xff0c;然后累加得到最終結果。其過程如下&#xff1a; 將兩個大整數相乘&#xff0c;從低位開始逐位相乘&#xff0c;得到部分乘積&#xff1b;將每一位的部分乘積相加&#xf…

【Emgu CV教程】7.8、圖像銳化(增強)之同態濾波

文章目錄 一、同態濾波大體原理二、代碼三、效果舉例 一、同態濾波大體原理 之前介紹的幾個銳化、增強方法&#xff0c;包括更早之前介紹的圖像模糊方法&#xff0c;都是基于空間域進行處理&#xff0c;也就是直接對目標點周邊像素值進行各種數學運算。而這篇文章提到的同態濾…

學習計算機的好處

之前寫了那么多計算機知識&#xff0c;卻沒有一篇寫我學計算機的初衷。 掌握計算機技術不僅可以提高我們的就業能力和競爭力&#xff0c;同時有助于我們更好地認識世界&#xff0c;提高工作效率和解決問題的能力&#xff0c;更好地利用科技創造更美好的未來。 因此&#xff0c…

pyvisa庫實現儀器控制

python控制儀器實現自動化常用pyvisa庫&#xff0c;基本控制可大致分為創建儀器控制對象、寫入控制指令、讀取儀表信息和查詢儀表狀態&#xff0c;下面進行基本的講解。 pyvisa庫創建儀表控制對象 import tkinter.messagebox import pyvisaclass InstrumentControl:inst Non…

喜迎喬遷,開啟新章 ▏易我科技新辦公區喬遷慶典隆重舉行

2024年1月18日&#xff0c;易我科技新辦公區喬遷慶典在熱烈而喜慶的氛圍中隆重舉行。新辦公區的投入使用&#xff0c;標志著易我科技將以嶄新姿態邁向新的發展階段。 ▲ 易我科技新辦公區 隨著公司業務的不斷發展和壯大&#xff0c;為了更好地適應公司發展的需要&#xff0c;…

2024-02-29(Flink)

1.Flink原理&#xff08;角色分工&#xff09; 2.Flink執行流程 on yarn版&#xff1a; 3.相關概念 1&#xff09;DataFlow&#xff1a;Flink程序在執行的時候會被映射成一個數據流模型&#xff1b; 2&#xff09;Operator&#xff1a;數據流模型中的每一個操作被稱作Operat…

Spring Boot 高級實踐探索:深度解讀與實戰演練

隨著開發者對Spring Boot框架的基礎運用日漸嫻熟&#xff0c;邁向更深層次的技術探究和應用場景拓展顯得尤為重要。本文將帶領讀者深入研究Spring Boot的若干核心進階特性&#xff0c;并結合實際項目案例&#xff0c;涵蓋自動化測試策略的深化應用、高級配置管理機制的巧妙運用…

Redis 之四:Redis 事務和樂觀鎖

事務特點 Redis 事務可以一次執行多個命令&#xff0c; 并且帶有以下三個重要的保證&#xff1a; 批量操作在發送 EXEC 命令前被放入隊列緩存。 收到 EXEC 命令后進入事務執行&#xff0c;事務中任意命令執行失敗&#xff0c;其余的命令依然被執行。不具備原子性。 在事務執…

通訊錄——C語言實現

頭文件Contact.h #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> #pragma once #define MAX 100 #define MAX_NAME 20 #define MAX_SEX 5 #define MAX_TELE 12 #define MAX_ADDR 30//表示一個人的信息 //struct…

npm使用國內淘寶鏡像的方法整理

命令配置安裝&#xff1a; 淘寶鏡像&#xff1a; npm config set registry https://registry.npm.taobao.org/ 官方鏡像&#xff1a; npm config set registry https://registry.npmjs.org 通過cnpm安裝&#xff1a; npm install -g cnpm --registryhttps://registry.npm.…

PTA L2-003 月餅 (附坑點說明)

月餅是中國人在中秋佳節時吃的一種傳統食品&#xff0c;不同地區有許多不同風味的月餅。現給定所有種類月餅的庫存量、總售價、以及市場的最大需求量&#xff0c;請你計算可以獲得的最大收益是多少。 注意&#xff1a;銷售時允許取出一部分庫存。樣例給出的情形是這樣的&#…