偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

JavaScript中的新數(shù)組切片表示法——array[start:stop:step]

開發(fā) 前端
代碼中我們還沒有添加對錯誤類型和邊界情況的檢查,花了不少時(shí)間調(diào)試這些問題。如果我們進(jìn)一步添加多維數(shù)組支持,比如 numpy,代碼會變得更加復(fù)雜,但這也是值得嘗試的。

使用這種新的切片表示法,我們將不再編寫如下的 slice() 代碼:

圖片圖片

而是可以像這樣編寫代碼:

圖片圖片

這種寫法不僅更簡潔、可讀性更強(qiáng),而且更直觀。

更棒的是,我們不必等到它正式發(fā)布——現(xiàn)在就可以使用它。你可以通過擴(kuò)展 Array 類來實(shí)現(xiàn)這個功能:

圖片圖片

處理未指定的結(jié)束索引

如果我們省略第二個數(shù)字(即 end 參數(shù)),數(shù)組會切片到最后一個元素嗎?

圖片圖片

它不會這樣做?

圖片圖片

這是因?yàn)?end 被賦值為空字符串,而 Number('') 的結(jié)果是 0,所以我們得到了 arr.slice(n, 0),它總是返回一個空數(shù)組。

為了解決這個問題,我們可以對 r() 方法進(jìn)行升級,使其能夠正確處理這種情況:

圖片圖片

圖片圖片

處理負(fù)索引

這個新方法能處理負(fù)索引嗎?

圖片圖片

當(dāng)然可以!

圖片圖片

負(fù)的 start 或 end 值會直接傳遞給 slice(),因?yàn)樗呀?jīng)內(nèi)置了對負(fù)索引的支持。

起始-結(jié)束-步長

我們再次升級,支持 array[start:stop:step],也就是支持以固定的間隔跳過數(shù)組中的元素。

正如我們在 Python 中所見的那樣:

圖片圖片

然而,slice() 本身并不支持步長,所以我們需要使用一個 for 循環(huán)來快速遍歷數(shù)組:

圖片圖片

圖片圖片

Array.reduce() 以不可變的方式完成了完全相同的任務(wù)。我認(rèn)為,在數(shù)據(jù)轉(zhuǎn)換的過程中,函數(shù)式編程的流動性使得它顯得格外優(yōu)雅。

可讀性受到影響了…

圖片圖片

反向步長

如果我們想要反向遍歷數(shù)組呢?

當(dāng)然 Python 有它:

圖片圖片

在這種情況下,start 應(yīng)該大于 stop,因?yàn)槟闶菑挠蚁蜃笥?jì)數(shù),所以 start 應(yīng)該更大一些。

圖片圖片

我們需要再次調(diào)整 slice() 的使用方式,當(dāng) step 為負(fù)數(shù)時(shí)交換 absStart 和 absEnd:

圖片圖片

slice() 在 end > start 時(shí)會返回一個空數(shù)組,這樣我們就能夠使用它進(jìn)行一些基礎(chǔ)操作。

圖片圖片

綜合實(shí)現(xiàn)

現(xiàn)在,讓我們將所有功能組合在一起:

圖片圖片

圖片圖片

圖片圖片

回顧一下我們是如何開始的:

圖片圖片

這不僅簡化了代碼,而且成功將 Python 中的酷炫數(shù)組切片語法帶入了 JavaScript。

當(dāng)然,代碼中我們還沒有添加對錯誤類型和邊界情況的檢查,花了不少時(shí)間調(diào)試這些問題。如果我們進(jìn)一步添加多維數(shù)組支持,比如 numpy,代碼會變得更加復(fù)雜,但這也是值得嘗試的。

圖片圖片

通過這個新的 Array r() 方法,我們成功地將 Python 的數(shù)組切片語法引入了 JavaScript。

責(zé)任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2009-09-21 16:59:29

Array擴(kuò)展

2022-07-06 10:04:45

JavaScript數(shù)組前端

2021-02-07 07:52:07

數(shù)組 JavaScript結(jié)構(gòu)

2022-06-02 13:54:04

Go數(shù)組切片

2011-03-30 16:15:53

Array數(shù)組

2016-10-13 19:33:10

javascript數(shù)組indexOf

2023-03-29 08:03:53

2009-11-24 17:52:46

PHP函數(shù)in_arr

2016-12-27 10:19:42

JavaScriptindexOf

2021-09-22 23:17:09

Java開發(fā)數(shù)組

2010-07-02 12:31:35

UML對象圖

2016-09-12 17:19:51

JavaScriptArray操作技巧

2010-10-09 09:26:59

Array數(shù)組JS

2024-10-15 08:57:08

Go語言切片

2022-08-06 16:33:01

C語言數(shù)組內(nèi)存

2021-07-13 06:44:04

Go語言數(shù)組

2021-07-26 05:20:47

JavaScript解構(gòu)賦值數(shù)組解構(gòu)

2024-07-17 11:35:31

JavaScript解構(gòu)賦值

2024-09-10 15:34:18

JavaScript解構(gòu)賦值

2022-09-21 08:00:58

JavaScriptTC39
點(diǎn)贊
收藏

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