最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中數(shù)組slice和splice的對比小結(jié)

 更新時間:2016年09月22日 11:35:32   投稿:daisy  
相信對很多學(xué)習(xí)JavaScript語言的人來說,都會經(jīng)常搞不清slice和splice這兩個方法。它們雖然名稱相似,但是功能卻完全不同。所以這篇文章就給大家詳細(xì)整理了關(guān)于JavaScript中數(shù)組slice和splice的對比,有需要的可以參考學(xué)習(xí)。

前言

今天重溫了一下Javascript,看到了數(shù)組的方法,其中有兩個比較相似的方法——splice和splice,看著很像,就是多了一個p,但是用法卻相當(dāng)不一樣。

在使用中,可以通過選擇一個具有強(qiáng)語義表達(dá)性的 API 來減少混淆的發(fā)生。

1、slice

slice是指定在一個數(shù)組中的元素創(chuàng)建一個新的數(shù)組,即原數(shù)組不會變

數(shù)組的 slice (ECMAScript 5.1 標(biāo)準(zhǔn) 15.4.4.10 節(jié))非常類似于字符串的 slice。根據(jù)規(guī)范,slice 需要兩個參數(shù),起點(diǎn)和終點(diǎn)。它會返回一個包含了從起點(diǎn)開始,到終點(diǎn)之前之間所有元素的新數(shù)組。

理解 slice 的功能并不是太難:

'abc'.slice(1,2)   // "b"
[14, 3, 77].slice(1, 2) // [3]

需要特別注意的是它并不會修改原數(shù)組。

下面的代碼段描述了這個行為,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中數(shù)組功能最強(qiáng)大的方法,它能夠?qū)崿F(xiàn)對數(shù)組元素的刪除、插入、替換操作,返回值為被操作的值。

     splice刪除:color.splice(1,2) (刪除color中的1、2兩項(xiàng));

     splice插入:color.splice(1,0,'brown','pink') (在color鍵值為1的元素前插入兩個值);

     splice替換:color.splice(1,2,'brown','pink')  (在color中替換1、2元素);

雖然 splice(15.4.4.12 節(jié))也需要(至少)兩個參數(shù),但它的意義則完全不同。

[14, 3, 77].slice(1, 2)  // [3]
[14, 3, 77].splice(1, 2) // [3, 77]

除此之外,splice 還會改變原數(shù)組。

不要太驚訝,這正是 splice 的本意。

var x = [14, 3, 77]
var y = x.splice(1, 2)
console.log(x)   // [14]
console.log(y)   // [3, 77]

當(dāng)你編寫自己的模塊時,選擇一個最不容易發(fā)生混淆的 API 非常重要。理論上,你的用戶不應(yīng)該總是通過閱讀文檔來判斷他們需要哪一個。那么我們應(yīng)該遵循哪種命名規(guī)范呢?

我最熟悉的規(guī)范(與我之前在 QT 上的經(jīng)驗(yàn)有關(guān))是正確地選擇動詞:現(xiàn)在時表示可能的修改行為,過去時則不會修改原對象,而是返回一個新的版本。如果可以的話,這兩種版本都要提供。

參考下面的例子:

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 }

注意(在二維笛卡爾坐標(biāo)系中)移動位置的 translate() 和僅創(chuàng)建一個移動過的坐標(biāo)的 translated() 之間的區(qū)別。調(diào)用 translate 會修改點(diǎn) p 的值。然而,因?yàn)?translated() 不修改原對象,對象 q 沒有被修改,而只返回了一個新的拷貝 s。

總結(jié)

如果這個規(guī)范能夠非常一致地部署到你的應(yīng)用中,那么上面提到的那種混淆則會被最大化地減低。以上就是這篇文章的全部內(nèi)容了,希望能對大家的學(xué)習(xí)或者工作帶來一定的幫助。

相關(guān)文章

  • JS獲得多個同name 的input輸入框的值的實(shí)現(xiàn)方法

    JS獲得多個同name 的input輸入框的值的實(shí)現(xiàn)方法

    這篇文章主要介紹了基于JS代碼實(shí)現(xiàn)input密碼輸入框輸入密碼變黑點(diǎn)密文以及JS獲得多個同name 的input輸入框的值的實(shí)現(xiàn)方法,代碼簡單易懂,非常不錯,具有參考借鑒價(jià)值,需要的朋友參考下
    2017-01-01
  • js隨機(jī)生成網(wǎng)頁背景顏色的方法

    js隨機(jī)生成網(wǎng)頁背景顏色的方法

    這篇文章主要介紹了js隨機(jī)生成網(wǎng)頁背景顏色的方法,涉及javascript操作背景色的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • JavaScript屬性操作

    JavaScript屬性操作

    這篇文章介紹了JavaScript屬性的操作,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 移動端圖片上傳旋轉(zhuǎn)、壓縮問題的方法

    移動端圖片上傳旋轉(zhuǎn)、壓縮問題的方法

    在本篇文章中我們給大家分享了關(guān)于移動端圖片上傳旋轉(zhuǎn)、壓縮問題的解決方法,有需要的朋友們參考下
    2018-10-10
  • mqtt.js?無法連接/錯誤提示?WebSocket?connection?to?‘ws://xxxxx‘?failed:的解決方法

    mqtt.js?無法連接/錯誤提示?WebSocket?connection?to?‘ws://xxxxx‘?

    這篇文章主要介紹了mqtt.js?無法連接/錯誤提示?WebSocket?connection?to?‘ws://xxxxx‘?failed:,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • Javascript中正則表達(dá)式的全局匹配模式分析

    Javascript中正則表達(dá)式的全局匹配模式分析

    先看一道JavaScript題目,據(jù)說是國內(nèi)某知名互聯(lián)網(wǎng)企業(yè)的JavaScript筆試題,如果對正則的全局匹配模式不了解的話可能會對下面的輸出結(jié)果感到疑惑。
    2011-04-04
  • JS數(shù)組去重的常用方法總結(jié)

    JS數(shù)組去重的常用方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于js數(shù)組去重的常用方法,js數(shù)組去重是比較常見的數(shù)組操作方式之一,文中介紹了九種常用方法,需要的朋友可以參考下
    2023-10-10
  • 30分鐘快速入門掌握ES6/ES2015的核心內(nèi)容(上)

    30分鐘快速入門掌握ES6/ES2015的核心內(nèi)容(上)

    ES6增加了很多新的語法,很多同學(xué)學(xué)習(xí)起來感覺很別扭,有時候也不理解新增加的語法有什么用,對ES6的學(xué)習(xí)也沒有興趣進(jìn)而動力不足、學(xué)習(xí)效率不高。下面這篇文章將通過30分鐘帶大家快速入門掌握ES6/ES2015的核心內(nèi)容,需要的朋友可以參考下。
    2018-04-04
  • JavaScript XML和string相互轉(zhuǎn)化實(shí)現(xiàn)代碼

    JavaScript XML和string相互轉(zhuǎn)化實(shí)現(xiàn)代碼

    兩個小function實(shí)現(xiàn)XML和string相互轉(zhuǎn)化,需要的朋友可以參考下。
    2011-07-07
  • 淺析JavaScript 函數(shù)柯里化

    淺析JavaScript 函數(shù)柯里化

    這篇文章主要介紹了JavaScript 函數(shù)柯里化的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下
    2020-09-09

最新評論

瑞安市| 浠水县| 祁门县| 乌兰县| 阜康市| 麦盖提县| 宁陕县| 砀山县| 太保市| 莱芜市| 凤台县| 英吉沙县| 博客| 漳州市| 天长市| 花垣县| 洪洞县| 靖边县| 城市| 北辰区| 台湾省| 新密市| 靖宇县| 巴塘县| 禹州市| 北票市| 钟山县| 珲春市| 曲松县| 吕梁市| 蒙城县| 游戏| 中阳县| 奉化市| 绥化市| 巧家县| 辽宁省| 新田县| 固阳县| 遵化市| 关岭|