JavaScript中數組slice和splice的比較小結
前言
今天重溫了一下Javascript,看到了數組的方法,其中有兩個比較相似的方法——splice和splice,看著很像,就是多了一個p,但是用法卻相當不一樣。
在使用中,可以透過選擇一個具有強語意表達性的 API 來減少混淆的發生。
1、slice
slice是指定在數組中的元素創建一個新的數組,即原始數組不會改變
數組的 slice (ECMAScript 5.1 標準 15.4.4.10 節)非常類似於字串的 slice。根據規範,slice 需要兩個參數,起點和終點。它會傳回一個包含了從起點開始,到終點之前之間所有元素的新陣列。
理解 slice 的功能並不是太難:
'abc'.slice(1,2) // "b" [14, 3, 77].slice(1, 2) // [3]
需要特別注意的是它並不會修改原數組。
下面的程式碼段描述了這個行為,x 的值沒有變,y 則是被截取的部分。
var x = [14, 3, 77]; var y = x.slice(1, 2); console.log(x); // [14, 3, 77] console.log(y); // [3]
2、splice
splice是JS中陣列功能最強大的方法,它能夠實現對陣列元素的刪除、插入、替換操作,傳回值為被操作的值。
splice刪除:color.splice(1,2) (刪除color中的1、2兩項);
splice插入:color.splice(1,0,'brown','color鍵值為1的元素前插入兩個值);
splice替換:color.splice(1,2,'brown','pink') (在color中替換1、2元素);
雖然splice(15.4 .4.12 節)也需要(至少)兩個參數,但它的意義則完全不同。
[14, 3, 77].slice(1, 2) // [3] [14, 3, 77].splice(1, 2) // [3, 77]
除此之外,splice 還會改變原數組。
不要太驚訝,這正是 splice 的本意。
var x = [14, 3, 77] var y = x.splice(1, 2) console.log(x) // [14] console.log(y) // [3, 77]
當你寫自己的模組時,選擇一個最不容易混淆的 API 非常重要。理論上,你的用戶不應該總是透過閱讀文件來判斷他們需要哪一個。那我們應該遵循哪一種命名規範呢?
我最熟悉的規範(與我之前在 QT 上的經驗有關)是正確地選擇動詞:現在式表示可能的修改行為,過去式則不會修改原對象,而是返回一個新的版本。如果可以的話,這兩種版本都要提供。
參考下面的例子:
var p = new Point(100, 75); p.translate(25, 25); console.log(p); // { x: 125, y: 100 } var q = new Point(200, 100); var s = q.translated(10, 50); console.log(q); // { x: 200, y: 100 } console.log(s); // { x: 210, y: 150 }
注意(在二維笛卡爾座標系中)移動位置的 translate() 和僅創建一個移動過的座標的 translated() 之間的差異。呼叫 translate 會修改點 p 的值。然而,因為 translated() 不修改原對象,對象 q 沒有被修改,而只回傳了一個新的拷貝 s。
總結
如果這個規範能夠非常一致地部署到你的應用中,那麼上面提到的那種混淆則會被最大化地減低。以上就是這篇文章的全部內容了,希望能對大家的學習或工作帶來一定的幫助。
更多JavaScript中數組slice和splice的對比小結相關文章請關注PHP中文網!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。
