日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

JavaScript 中有趣的九個常用編碼套路

來源: 責編: 時間:2023-08-14 22:01:17 326觀看
導讀這篇文章是面向新手的,但如果幸運的話,希望能給各位大佬們帶來一些小小的啟發。1、set對象:數組快速去重常規情況下,我們想要篩選唯一值,一般會想到遍歷數組然后逐個對比,或者使用成熟的庫比如lodash之類的。不過,ES6帶來了

這篇文章是面向新手的,但如果幸運的話,希望能給各位大佬們帶來一些小小的啟發。maq28資訊網——每日最新資訊28at.com

maq28資訊網——每日最新資訊28at.com

1、set對象:數組快速去重

常規情況下,我們想要篩選唯一值,一般會想到遍歷數組然后逐個對比,或者使用成熟的庫比如lodash之類的。maq28資訊網——每日最新資訊28at.com

不過,ES6帶來了一個新玩意兒!它引入了一個全新的對象類型:Set!而且,如果結合上...展開運算符,我們可以超級快速地創建一個已經去重的全新數組!maq28資訊網——每日最新資訊28at.com

const arr = [10, 10, 10, 20, 20, 30, 40, 40, 50, 60, 60, 70];const uniArr = [...new Set(array)];console.log(uniArr);// [10, 20, 30, 40, 50, 60, 70]

這個技巧只適用于包含基本類型的數組,比如undefined、null、boolean、string和number。maq28資訊網——每日最新資訊28at.com

但是要記住哦,如果數組里面還有對象、函數或其他數組的話,就不能用這個方法了!maq28資訊網——每日最新資訊28at.com

2、include方法:簡化( || 或)條件判斷

當我們使用邏輯運算符||進行條件判斷時,如果有很多可選值,代碼會變得冗長。maq28資訊網——每日最新資訊28at.com

不過,我們可以使用includes方法來簡化對數組的遍歷操作,方便地判斷數組是否包含某個特定的元素。maq28資訊網——每日最新資訊28at.com

這樣一來,我們就可以更簡潔地列出可選值,而不必寫一長串的條件判斷語句。includes方法可以幫助我們輕松判斷數組中是否存在指定的元素。maq28資訊網——每日最新資訊28at.com

const myNum = '3';const numArr = ['1', '2', '3'];// 使用 || if (myNum === '1' || myNum === '2' || myNum === '3') {    //……}// 使用 includeif (numArr.includes(myNum)) {    //……}

3、截斷數組:改變length就可以

操作數組時,我們通常會優先使用array對象中的高級函數。maq28資訊網——每日最新資訊28at.com

不過,我這里要介紹一種更簡單的方法來改變數組長度,我喜歡它的原因是它非常直觀且易讀。maq28資訊網——每日最新資訊28at.com

只需使用length屬性并傳遞一個數字,就可以改變數組的長度。這樣做非常方便!maq28資訊網——每日最新資訊28at.com

let array = ['1', '2', '3', '4'];array.length = 2;console.log(array); // ['1', '2']

當然 ,如果你更注重性能,還是請使用 array.slice()。maq28資訊網——每日最新資訊28at.com

4、數字分割符:提高數字可讀性

若要提高數字的可讀性,你可以使用下劃線作為分隔符來更好地區分數字的各個部分。這樣做可以讓數字更易讀,讓人一目了然。maq28資訊網——每日最新資訊28at.com

const num = 1_000_000_000;console.log(num); // 1000000000

5、控制臺打印:用對象包裹更清晰

在使用console.log()時,你可以將參數括在大括號中,這樣可以在控制臺輸出時同時顯示變量的名稱和值。這種方式非常方便,讓你更清晰地了解每個變量的內容。maq28資訊網——每日最新資訊28at.com

const name = "道長王jj";console.log({ name });// {//     "name": "道長王jj"http:// }

6、短路運算:簡化條件判斷

if...else條件判斷是代碼過程中最常用的,幾乎在任何情況下,我們都會快速地敲下它來控制邏輯流程。maq28資訊網——每日最新資訊28at.com

不過,有時候我們也希望代碼更加簡潔、快速,不占那么多篇幅。我們想盡可能地簡潔且快速,于是就會用到三元運算符:maq28資訊網——每日最新資訊28at.com

const num = 75;const result1 = num > 100 ? '大于100' : '小于100';

但是我在這里并不是推薦使用“三元運算”,其實有時候三元運算符可能會讓代碼邏輯變得有點復雜哦!比如這樣:maq28資訊網——每日最新資訊28at.com

const result2 = num > 100 ? (num > 200 ? '大于200' : '介于100和200之間') : '小于100';

這個時候,使用 && 和 || 這類邏輯運算符反而能更簡潔的表達算式。maq28資訊網——每日最新資訊28at.com

舉個例子:maq28資訊網——每日最新資訊28at.com

// 假設,我們有三個已經打過分的相親對象必須選擇一個來當女朋友,使用 `&&` 可以很好的幫我們做出選擇。const one = 8;const two = 9;const three = 10;// 返回10console.log(one && two && three); // 返回0console.log(0 && null);
// 當然,如果你足夠獨特~~(變態)~~,就是不要女朋友,如果選只選最差的,你可以使用 `||` 來幫你做吹選擇。const one = 8;const two = 9;const three = 10;// 返回8console.log(one || two || three); // 返回nullconsole.log(0 || null);

哦,這個情況在工作場景中確實很常見。maq28資訊網——每日最新資訊28at.com

假設我們想返回變量的 length ,但我們不確定接口會不會給我們需要的類型。maq28資訊網——每日最新資訊28at.com

這個時候我們就可以使用 if/else 語句來檢查是可接受的類型,但它會讓我們的代碼非常臃腫。maq28資訊網——每日最新資訊28at.com

這時候,我們可以使用短路運算來簡化代碼,而且有極高的健壯性:maq28資訊網——每日最新資訊28at.com

// 使用iflet temp = getArray();if (!temp) {    tempLength = 0;} else {    tempLength = temp.length}// 使用 ||// 如果變量 tempArray 為真,則將返回該變量。否則,將返回 []const temp = (tempArray || []).length;

7、可選鏈:更加安全地訪問對象屬性

你有沒有遇到過訪問嵌套對象屬性的困擾?maq28資訊網——每日最新資訊28at.com

就是有時候你根本不確定這個對象或者它的子屬性到底存不存在,結果就報錯了!以至于程序崩潰無法運行maq28資訊網——每日最新資訊28at.com

console.log(abc.ss)// ceError: abc is not defined//     at <anonymous>:1:1// (匿名) @ VM190795

為了不讓報錯阻止我們的程序運行,我們通常會將它包裝在一個if……else代碼塊中:maq28資訊網——每日最新資訊28at.com

if (abc.ss) {  console.log(abc.ss);} else {  console.log('沒有abc這個變量喏~');}// 還可以用短路運算console.log(abc && abc.ss)

不過,ES6的可選鏈可以讓我們徹底拋棄掉上面的寫法了,我們可以直接這樣做:maq28資訊網——每日最新資訊28at.com

console.log(abc?.ss?.aa?.bb?.cc)

8、巧用運算符:快速類型轉換

在這之前需要科普一些小知識:maq28資訊網——每日最新資訊28at.com

除了常規的true和false之外,其他變量也可以被當成true 或者 false。maq28資訊網——每日最新資訊28at.com

除了0、""(空字符串)、null、undefined、NaN、false 之外呢,JavaScript中的所有其他值都是"真的"哦!maq28資訊網——每日最新資訊28at.com

所以呢,基于這個認知。maq28資訊網——每日最新資訊28at.com

我們可以使用負運算符 ! ,將類型轉換為 "boolean" 。maq28資訊網——每日最新資訊28at.com

const x = Boolean(expression);     // 推薦const x = !!(expression);          // 推薦const x = new Boolean(expression); // 不太好

我們可以使用連接運算符 + 后跟一組空引號 '',將類型轉換為 "string" 。maq28資訊網——每日最新資訊28at.com

const value = 12 + '';console.log(value); // '12'

我們可以使用減法運算符 -,將類型轉換為 "number" 。maq28資訊網——每日最新資訊28at.com

感謝 @hhhyyymmm 指正,我之前這里使用了加法運算符。maq28資訊網——每日最新資訊28at.com

let myValue = '12';myValue = myValue - 1;console.log(myValue); // 11// 當然也可以轉換 Boolean 變成 Number // 工作中不推薦這樣用!!!!console.log(+true); // 1console.log(+false); // 0

9、快速運算:更快更簡潔的數學運算操作符

以前我們在使用JavaScript進行數學運算時,總是要借助Math庫進行運算。很奇怪的是,但是很多教程并沒有提醒我們,ES7其實帶來的全新運算符。maq28資訊網——每日最新資訊28at.com

如果想示乘方操作,通常我們會調用Math.pow(5, 7)這個方法。但是現在我們可以使用冪運算符**了,而且性能更快更好。maq28資訊網——每日最新資訊28at.com

console.log(5 ** 7); // 78125

如果想將浮點數轉換為整數,通常我們會使用Math.floor()、Math.ceil()或Math.round()這些方法。不過,其實可以使用 | 將浮點數直接截斷為整數。這個技巧可以讓你的代碼更簡潔高效哦!maq28資訊網——每日最新資訊28at.com

// 正數,則向下舍入console.log(34.9 | 0);  // Result: 34// 負數,則向上舍入console.log(-12.9 | 0); // Result: -12

以前我們只取千分位需要進行類型轉換后才能進行取數maq28資訊網——每日最新資訊28at.com

let str = "33545"; Number(str.substring(0, str.length - 3)); // 33

但是我們可以更優雅地這樣做:maq28資訊網——每日最新資訊28at.com

console.log(33545 / 1000 | 0)  // Result: 33

希望本文能夠幫助到你, 雖然真的很基礎很基礎。maq28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-5725-0.htmlJavaScript 中有趣的九個常用編碼套路

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 什么是代碼審查及其如何節省時間:開發人員指南

下一篇: 面試官:JavaScript中“x !== x”可以返回True嗎?

標簽:
  • 熱門焦點
  • CSS單標簽實現轉轉logo

    轉轉品牌升級后更新了全新的Logo,今天我們用純CSS來實現轉轉的新Logo,為了有一定的挑戰性,這里我們只使用一個標簽實現,將最大化的使用CSS能力完成Logo的繪制與動畫效果。新logo
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權的大型語言模型Llama 2。這是一項非常重要的進展:Llama 2可免費用于研究和商業用途。(幾小時前,swyy發現它已從LLaMA 2更名為Lla
  • 東方甄選單飛:有些鳥注定是關不住的

    文/彭寬鴻編輯/羅卿東方甄選創始人俞敏洪帶隊的&ldquo;7天甘肅行&rdquo;直播活動已在近日順利收官。成立后一年多時間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,&ldquo;7
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元&ldquo;人在職場,應該選擇什么樣的著裝?&rdquo;近日,在網絡上,一個與著裝相關的帖子引發關注,在該帖子里,一位在高級寫字樓亞洲金
  • 三星獲批量產iPhone 15全系屏幕:蘋果史上最驚艷直屏

    按照慣例,蘋果將繼續在今年9月舉辦一年一度的秋季新品發布會,有傳言稱發布會將于9月12日舉行,屆時全新的iPhone 15系列將正式與大家見面,不出意外的話
  • iQOO 11S屏幕細節公布:首發三星2K E6全感屏 安卓最好的直屏手機

    日前iQOO手機官方宣布,新一代電競旗艦iQOO 11S將會在7月4日19:00正式與大家見面。隨著發布時間的日益臨近,官方關于該機的預熱也更加密集,截至目前已
  • iQOO Neo8 Pro評測:旗艦雙芯加持 最強性能游戲旗艦

    【Techweb評測】去年10月,iQOO推出了一款Neo7手機,該機搭載了聯發科天璣9000+,配備獨顯芯片Pro+,帶來了同價位段最佳的游戲體驗,一經上市便受到了諸多用
  • 英特爾Xe-HP項目終止,將專注Xe-HPC/HPG系列顯卡

    據10 月 31 日消息報道,英特爾高級副總裁兼加速計算系統和圖形事業部總經理 表示,Xe-HP“ Arctic Sound” 系列服務器 GPU 已經應用于 oneAPI devcloud 云服
Top 主站蜘蛛池模板: 三明市| 临澧县| 南宁市| 来凤县| 青河县| 枣强县| 鄂尔多斯市| 邯郸县| 兴安盟| 杭锦旗| 谢通门县| 保亭| 西平县| 民乐县| 闽侯县| 比如县| 鸡泽县| 抚松县| 平武县| 勐海县| 丰宁| 晋城| 张家界市| 鹤庆县| 普宁市| 盐亭县| 蛟河市| 依兰县| 四子王旗| 博客| 龙门县| 青州市| 海安县| 于都县| 朝阳区| 灵山县| 同德县| 沾化县| 久治县| 新绛县| 当阳市|