自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

11個(gè)罕見(jiàn)的 JavaScript 單行代碼,會(huì)讓你大吃一驚

開(kāi)發(fā) 前端
在今天的文章中,我將與你一起來(lái)學(xué)習(xí) 11 個(gè)罕見(jiàn)但功能強(qiáng)大的單行代碼?,F(xiàn)在,準(zhǔn)備好,讓我們開(kāi)始吧!

如果你想給專業(yè)開(kāi)發(fā)人員留下深刻印象,你會(huì)做什么?很簡(jiǎn)單:用簡(jiǎn)單的邏輯和盡可能少的代碼行來(lái)解決一個(gè)復(fù)雜的問(wèn)題。隨著 ES6 箭頭函數(shù)的引入,可以創(chuàng)建看起來(lái)優(yōu)雅而簡(jiǎn)單的單行代碼。

在今天的文章中,我將與你一起來(lái)學(xué)習(xí) 11 個(gè)罕見(jiàn)但功能強(qiáng)大的單行代碼?,F(xiàn)在,準(zhǔn)備好,讓我們開(kāi)始吧!

1、獲取字符串中的字符數(shù)

獲取字符數(shù)是一個(gè)有用的實(shí)用程序,在許多情況下都很有用,我們可以使用它來(lái)獲取空格數(shù)和隨后的單詞數(shù),或者這可用于獲取字符串中某個(gè)分隔符的計(jì)數(shù)。

const characterCount = (str, char) => str.split(char).length - 1

這個(gè)想法很簡(jiǎn)單,我們使用傳遞的參數(shù) char 拆分字符串并獲取返回?cái)?shù)組的長(zhǎng)度。由于每次將字符串拆分,都會(huì)比拆分器多一個(gè);所以減去 1,我們有一個(gè) characterCount 單行。

2、檢查對(duì)象是否為空

檢查對(duì)象的空性實(shí)際上比看起來(lái)要困難得多,即使對(duì)象為空,每次檢查對(duì)象是否等于 {} 也會(huì)返回 false。

幸運(yùn)的是,下面的單行代碼正是我們想要的。

const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object

在這一行中,我們檢查對(duì)象的鍵長(zhǎng)度是否等于 0,以及傳遞的參數(shù)是否為實(shí)際對(duì)象。

3、等待一段時(shí)間再執(zhí)行

在這一行中,我們將通過(guò)一些異步編程來(lái)弄臟我們的代碼。這個(gè)想法很簡(jiǎn)單,在運(yùn)行代碼時(shí),如果你想等待一定的時(shí)間,這里是等待單行:

const wait = async (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds));

在等待單行中,我們創(chuàng)建一個(gè)承諾并在給定的時(shí)間后使用 setTimeout 函數(shù)解決它。

4、 獲取兩個(gè)日期之間的日差

在開(kāi)發(fā) Web 應(yīng)用程序時(shí),日期通常是實(shí)現(xiàn)起來(lái)最令人困惑的部分,因?yàn)橛性S多概念很容易被誤算。

這是一個(gè)強(qiáng)大的單線計(jì)算兩個(gè)日期之間的天差。但還有更多事情要做,正如我所做的那樣,你可以創(chuàng)建自己的單線來(lái)計(jì)算月、年差異等。

const daysBetween = (date1, date2) => Math.ceil(Math.abs(date1 - date2) / (1000 * 60 * 60 * 24))

這種單線背后的邏輯很容易理解。當(dāng)兩個(gè)日期相減時(shí),返回值是以毫秒為單位的差值,要將毫秒轉(zhuǎn)換為天,我們必須將其除以毫秒、秒、分鐘和小時(shí)。

5、重定向到另一個(gè) URL

如果你曾經(jīng)創(chuàng)建過(guò)真實(shí)的網(wǎng)站,我敢肯定你遇到過(guò)身份驗(yàn)證邏輯。例如,非管理員用戶不應(yīng)該能夠訪問(wèn) /admin 路由。如果用戶嘗試,那么,你必須將其重定向到另一個(gè) URL。

這個(gè)單線正是我上面提到的情況,但我認(rèn)為你可以找到更多的用例。

const redirect = url => location.href = url

location 是全局窗口對(duì)象的方法,設(shè)置 href 屬性的行為與用戶單擊鏈接相同。

6、檢查設(shè)備上的觸摸支持

隨著可以連接到互聯(lián)網(wǎng)的設(shè)備越來(lái)越多,創(chuàng)建響應(yīng)式網(wǎng)站的必要性也在增加。20 年前,開(kāi)發(fā)者應(yīng)該考慮網(wǎng)站的桌面版本,但今天超過(guò) 50% 的網(wǎng)絡(luò)流量來(lái)自觸摸移動(dòng)設(shè)備。因此,基于設(shè)備的觸控支持采取一些行動(dòng)是一個(gè)非常重要的概念。

const touchSupported = () => ('ontouchstart' in window || DocumentTouch && document instanceof DocumentTouch)

在這一行中,我們正在檢查文檔是否支持 touchstart 事件。

7、 在元素后插入 HTML 字符串

開(kāi)發(fā) Web 應(yīng)用程序時(shí),使用 JavaScript 更新 DOM 是一件很常見(jiàn)的事情。有一些基本的方法可以完成工作,但是,當(dāng)情況變得復(fù)雜時(shí),就很難克服。

這是一個(gè)在 HTML 元素之后立即注入 HTML 字符串的單行代碼。經(jīng)過(guò)幾分鐘的思考和谷歌搜索,我相信你可以找到這個(gè)單線的以前版本。

const insertHTMLAfter = (html, el) => el.insertAdjacentHTML('afterend', html)

8、隨機(jī)排列數(shù)組

在開(kāi)發(fā)中打亂一組數(shù)據(jù)是一個(gè)常見(jiàn)的情況,你可以隨時(shí)遇到,不幸的是,JavaScript 中沒(méi)有內(nèi)置數(shù)組的 shuffle 方法。

但是,這里有一個(gè)你可以每天使用的 shuffle one-liner:

const shuffle = arr => arr.sort(() => 0.5 - Math.random())

它利用數(shù)組的排序方法,在數(shù)組的前一個(gè)元素之前或之后隨機(jī)排序。

9、在網(wǎng)頁(yè)上獲取選定的文本

瀏覽器在全局窗口對(duì)象上有一個(gè)名為 getSelection 的內(nèi)置方法。使用此方法,你可以創(chuàng)建一個(gè)單行,返回網(wǎng)頁(yè)上突出顯示或選定的文本。

const getSelectedText = () => window.getSelection().toString()

10、獲取隨機(jī)布爾值

在開(kāi)發(fā)時(shí),尤其是在寫(xiě)游戲代碼時(shí),有時(shí),我們會(huì)想隨機(jī)采取行動(dòng)。在這些情況下,下面的單行代碼非常方便。

const getRandomBoolean = () => Math.random() >= 0.5

上面的單行代碼有 50/50 的機(jī)會(huì)返回真或假。因?yàn)樯傻碾S機(jī)數(shù)大于0.5的概率等于變小的概率。

然而,例如,如果你想得到一個(gè)概率為 70% 的隨機(jī)布爾值,那么你可以簡(jiǎn)單地將 0.5 更改為 0.7 等等。

11、計(jì)算數(shù)組的平均值

可以使用多種方法計(jì)算數(shù)組的平均值。但邏輯對(duì)所有人都是一樣的,我們必須得到數(shù)組及其長(zhǎng)度的總和;然后,通過(guò)除法給出平均值。

const average = (arr) => arr.reduce((a, b) => a + b) / arr.length

在平均單行中,我們使用 reduce 來(lái)獲取一行中數(shù)組的總和,而不是使用循環(huán)。然后,我們將它除以數(shù)組長(zhǎng)度,這是一個(gè)數(shù)組的平均值。

總結(jié)

現(xiàn)在,我想你應(yīng)該知道了 11 個(gè)簡(jiǎn)單但功能強(qiáng)大的 JavaScript 單行代碼。我之所以試著選擇那些不太流行和不太知名的技巧,主要是希望,這樣可以幫助你學(xué)習(xí)新的東西。那些我們每天使用的東西,我想你已經(jīng)會(huì)了。

最后,感謝你的閱讀,如果你喜歡它,覺(jué)得它有用的話,請(qǐng)記得點(diǎn)贊我,關(guān)注我,如果你對(duì)這篇文章有什么要說(shuō)的,請(qǐng)?jiān)诹粞詤^(qū)告訴我,我們明天見(jiàn)。

責(zé)任編輯:龐桂玉 來(lái)源: web前端開(kāi)發(fā)
相關(guān)推薦

2022-07-12 10:18:05

JavaScript單行代碼

2024-05-10 15:41:22

字符串TypeScrip

2021-09-27 11:13:12

比特幣加密貨幣貨幣

2020-09-10 09:39:56

大數(shù)據(jù)大數(shù)據(jù)統(tǒng)計(jì)數(shù)據(jù)

2011-03-29 09:34:38

APP應(yīng)用程序LBS

2024-04-03 14:17:47

VR虛擬現(xiàn)實(shí)增強(qiáng)現(xiàn)實(shí)

2024-10-29 08:30:29

2021-06-11 13:20:41

Vivaldi 4.0Linux瀏覽器

2023-10-08 14:35:08

2019-03-15 16:16:15

蘋(píng)果ARVR

2023-10-06 12:48:00

數(shù)據(jù)訓(xùn)練

2023-10-10 16:20:38

JavaScript代碼技巧

2024-10-09 14:45:41

2010-07-07 09:34:44

服務(wù)器

2022-11-28 23:44:26

JavaScript技巧程序員

2015-02-11 10:21:07

JavaScript

2016-11-21 17:58:38

大數(shù)據(jù)安全合規(guī)

2013-01-31 09:26:56

2022-10-20 15:16:23

JavaScript數(shù)組技能

2010-11-29 15:35:36

云計(jì)算經(jīng)濟(jì)學(xué)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)