30個Javascript知識點總結,總有你不會的!

来源:https://www.cnblogs.com/cybozu/archive/2023/02/13/17116744.html
-Advertisement-
Play Games

摘要:本文帶大家學習一下關於CSS屬性的繼承。 本文分享自華為雲社區《關於CSS有哪些屬性可以繼承?》,作者:黛琳ghz。 前言 今天遇到一個很有意思的題目,通過題目可以順便學習一下關於CSS屬性的繼承。(答案是ACD) 關於CSS屬性繼承 字體系列屬性 font:組合字體font-family:規 ...


近重溫了一遍紅寶書,發現一些比較好玩的寫法,很多東西日常都在用,但是發現還會有不一樣的寫法,結合一些日常工作中使用的方法,為大家總結一篇日常經常使用可能還不知道的點,希望對你能有所幫助:

一行代碼完成結構加賦值

我們日常經常使用結構賦值,一般都是先結構,再賦值,當然我們也可以一行就完成解構加賦值操作,看起來非常簡化,當然可讀性你懂得!

let people = { name: null, age: null };
let result = { name: '張三',  age: 16 };
({ name: people.name, age: people.age} = result);
console.log(people) // {"name":"張三","age":16}###

對基礎數據類型進行解構

日常中我們應該用不到這樣的場景,但是實際上我們也可以對基礎數據類型解構。

const {length : a} = '1234';
console.log(a) // 4

對數組解構快速拿到最後一項值

實際上我們是可以對數組解構賦值拿到length屬性的,通過這個特性也可以做更多的事情。

const arr = [1, 2, 3];
const { 0: first, length, [length - 1]: last } = arr;
first; // 1
last; // 3
length; // 3

將下標轉為中文零一二三...

日常可能有的列表我們需要將對應的012345轉為中文的一、二、三、四、五...,在老的項目看到還有通過自己手動定義很多行這樣的寫法,於是寫了一個這樣的方法轉換。

export function transfromNumber(number){
  const  INDEX_MAP = ['零','一'.....]
  if(!number) return
  if(number === 10) return INDEX_MAP[number]
  return [...number.toString()].reduce( (pre, cur) => pre  + INDEX_MAP[cur] , '' )
}

判斷整數的不同方法

/* 1.任何整數都會被1整除,即餘數是0。利用這個規則來判斷是否是整數。但是對字元串不准確 */
function isInteger(obj) {
 return obj%1 === 0
}
/* 1. 添加一個是數字的判斷 */
function isInteger(obj) {
 return typeof obj === 'number' && obj%1 === 0
}
/* 2. 使用Math.round、Math.ceil、Math.floor判斷 整數取整後還是等於自己。利用這個特性來判斷是否是整數*/
function isInteger(obj) {
 return Math.floor(obj) === obj
}
/* 3. 通過parseInt判斷 某些場景不准確 */
function isInteger(obj) {
 return parseInt(obj, 10) === obj
}
/* 4. 通過位運算符*/
function isInteger(obj) {
 return (obj | 0) === obj
}
/* 5.ES6提供了Number.isInteger */

通過css檢測系統的主題色從而全局修改樣式

@media 的屬性 prefers-color-scheme就可以知道當前的系統主題,當然使用前需要查查相容性

@media (prefers-color-scheme: dark) { //... } 
@media (prefers-color-scheme: light) { //... }

javascript也可以輕鬆做到

window.addEventListener('theme-mode', event =>{ 
    if(event.mode == 'dark'){}
   if(event.mode == 'light'){} 
})
window.matchMedia('(prefers-color-scheme: dark)') .addEventListener('change', event => { 
    if (event.matches) {} // dark mode
})

數組隨機打亂順序

通過 0.5-Math.random() 得到一個隨機數,再通過兩次sort排序打亂的更徹底,但是這個方法實際上並不夠隨機,如果是企業級運用,建議使用第二種洗牌演算法

shuffle(arr) {
      return arr.sort(() => 0.5 - Math.random()). sort(() => 0.5 - Math.random());
 },
function shuffle(arr) {
  for (let i = arr.length - 1; i > 0; i--) {
    const randomIndex = Math.floor(Math.random() * (i + 1))
    ;[arr[i], arr[randomIndex]] = [arr[randomIndex], arr[i]]
  }
  return arr
}

隨機獲取一個Boolean值

和上個原理相同,通過隨機數獲取,**Math.random()**的區間是0-0.99,用0.5在中間百分之五十的概率

function randomBool() {
    return 0.5 - Math.random()
}

把數組的第一項放到最後一項

function (arr){
    return arr.push(arr.shift());
}

把數組最後一項移到第一項

function(arr){
  return arr.unshift(arr.pop());
}

篇幅關係,更多總結請參考:https://cybozudev.kf5.com/hc/community/question/34258634/?from=cnblog


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 總結了一下在以往工作中,對於`Hive SQL`調優的一些實際應用,是日常積累的一些優化技巧,如有出入,歡迎在評論區留言探討~ ...
  • 記錄一些工作中有意思的統計指標,做過一些簡化方便大家閱讀,記錄如有錯誤,歡迎在評論區提問討論~ 問題類型 連續問題 兩種思路 第一種:日期減去一列數字得出日期相同,主要是通過row_number視窗函數 第二種:後一個日期減去前一個日期差值相等,用的較少,可以用lag/lead視窗函數解決 分組問題 ...
  • 一、研發背景 DataX官方開源的版本支持HDFS文件的讀寫,但是截止目前,並沒有支持Parquet文件的讀寫,得益於DataX出色的數據同步性能,去年公司的項目大部分採用了DataX作為數據同步工具,但是從CDH集群同步Parquet或者將其他數據源的數據以Parquet格式寫入HDFS,這兩個常 ...
  • 前文回顧 實現一個簡單的Database系列 譯註:cstack在github維護了一個簡單的、類似sqlite的資料庫實現,通過這個簡單的項目,可以很好的理解資料庫是如何運行的。本文是第八篇,主要是對B-tree的葉子節點格式的實現 Part 8 B-Tree葉子節點格式 我們準備把表的格式從非排 ...
  • Postgresql通過docker進行高可用部署 在postgresql官網看了pgpool-II的文檔,發現部署比較麻煩 pgpool-II官方文檔:https://www.pgpool.net/mediawiki/index.php/Documentation 為了方便快捷還是使用docker ...
  • 2022年12月22日工業和信息化部令第57號公佈,自2023年7月1日起施行 主要總結為以下幾點: 1.型號核准證的有效期不短於2年,不超過5年,型號核准證每次延續的有效期不超過5年 2.微功率短距離無線電發射設備使用說明中應當註明“使用微功率短距離無線電發射設備應當符合國家無線電管理有關規定”字 ...
  • html基礎入門 1. 什麼是html Hypertext Markup Language 超文本標記語言 2. 基本結構 <!DOCTYPE html> <!-- 註釋:此為html5的聲明方式 --> <html> <head></head> <body></body> </html> 順序 聲 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前言 您或許會疑惑,網上那麼多去重方法,這篇文章還有什麼意義? 彆著急,這篇文章只節選了簡單的,好玩的,古老的,有實際講解意義的去重方法,除了去重的實現以外,我還將和您分享這其中的其他細節和拓展。 您或許不理解,為什麼只有五種? 當然,我 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...