1. 程式人生 > >Javascript陣列---slice(),splice()方法的區別

Javascript陣列---slice(),splice()方法的區別

**

slice()

**

slice()可以理解為擷取陣列的方法,引數可以是一個或者兩個。

當slice()的引數有兩個的時候,第一個引數表示開始擷取的位置,第二個引數表示擷取結束的位置,把起始位置之間的值取出來變成陣列作為返回值(包括開始位置的值,不包括結束位置的值),因此slice()是不會改變原陣列的。

當slice()的引數只有一個的時候,引數表示開始擷取的位置,然後從這個位置把後面的值全部擷取下來。

看例子:

    var array=[0,1,2,3,4,5,6];

    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]
var array2=array.slice(3,6); //兩個引數 console.log(array); //[0, 1, 2, 3, 4, 5, 6] console.log(array2); //[3, 4, 5] var array2=array.slice(3); //一個引數 console.log(array); //[0, 1, 2, 3, 4, 5, 6] console.log(array2); //[3, 4, 5, 6]

特別的是,slice()的引數可以是負數

,如果引數是負數要先轉換為正數,例如slice(-3),轉換方法有兩個:
1,把引數值加上陣列長度得到位置;
2,-3即陣列倒數第三個位置(陣列最後一個數的位置是-1);

看例子:

    var array=[0,1,2,3,4,5,6];

    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]

    var array2=array.slice(-2);     //一個引數
    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]
    console.log(array2);           //[5, 6]
var array2=array.slice(-4,-2); //兩個引數 console.log(array); //[0, 1, 2, 3, 4, 5, 6] console.log(array2); //[3, 4]

最後一種情況就是,slice()的開始位置等於或者大於結束位置,這時候返回的會是一個空陣列。

看例子:

    var array=[0,1,2,3,4,5,6];

    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]

    var array2=array.slice(6,3);   
    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]
    console.log(array2);           //[]

**

splice()

**
雖然splice()只比slice()多了一個字母,但是splice()的功能強大了很多,它可以根據引數的不同,分別實現刪除,插入,替換操作。

話不多說,下面一一舉例:
刪除:
這時候splice()有兩個引數,第一個引數代表開始刪除的位置,第二個引數代表要刪除的個數,要注意的是,splice()會改變原陣列的值,原陣列保留的是刪除後的陣列,然後把刪除掉的項組成一個新陣列作為返回值。

    var array=[0,1,2,3,4,5,6];

    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]

    var array2=array.splice(3,2);
    console.log(array);            //[0, 1, 2, 5, 6]
    console.log(array2);           //[3,4]

插入
這時候splice()的引數不確定,但是至少會有兩個引數,跟刪除操作類似,第一個引數代表插入位置,第二個引數代表刪除個數,由於插入操作不用刪除,所以第二個引數是0。然後接下來的第三個第四個之後的引數,全部作為插入值插進原數組裡面,由於沒有刪除掉任何項,所以返回值會是一個空陣列。如果沒有插入值,則原陣列不變,返回值依舊為空陣列。

    var array=[0,1,2,3,4,5,6];

    console.log(array);         //[0, 1, 2, 3, 4, 5, 6]

    var array2=array.splice(3,0,'a','b');
    console.log(array);         //[0, 1, 2, "a", "b", 3, 4, 5, 6]
    console.log(array2);        //[]

替換
因為替換可以理解為先刪除再插入,所以替換操作是刪除+插入的結合。第一個引數代表開始替換的位置,第二個引數代表刪除個數,然後接下來的第三個第四個之後的引數,全部作為替換值從指定位置插進原數組裡面。同樣地,返回值會是原陣列中刪除掉的項,要注意的是,刪除項個數跟插入項個數互不影響,不一定要相等。

    var array=[0,1,2,3,4,5,6];

    console.log(array);         //[0, 1, 2, 3, 4, 5, 6]

    var array2=array.splice(3,2,'a','b','c');
    console.log(array);         //[0, 1, 2, "a", "b", "c", 5, 6]
    console.log(array2);        //[3,4]

同樣地,splice()的引數也一樣可以是負數,具體跟slice()方法一樣,這裡就不再重複了。

小結:
不同點:
1.slice()不會改變原陣列的值,而splice()會改變原陣列的值。
2.slice()是先複製原陣列的值作為備份,然後在上面進行操作,不影響原陣列的值;splice()是直接在原陣列上進行操作,所以影響了原陣列的值。
3.splice()的功能遠遠大於slice(),因為slice()的結果可以由splice()方法的刪除操作得出。

相同點:
2.slice()和splice()都會返回一個新陣列,組成新陣列的項都是從原陣列中去掉的項(對slice()方法來說是指在備份陣列中去掉的值)。

相關推薦

Javascript陣列---slice()splice()方法區別

** slice() ** slice()可以理解為擷取陣列的方法,引數可以是一個或者兩個。 當slice()的引數有兩個的時候,第一個引數表示開始擷取的位置,第二個引數表示擷取結束的位置,把起始位置之間的值取出來變成陣列作為返回值(包括開始位置的值

Javascript陣列---push()concat()方法區別

在陣列操作中,push()很常見,concat()卻很少見,然而兩者的用法很相似,可以理解為,push()是concat()的簡化版,先看下面的例子:     /*push()方法*/     var array=[1,2,3,4,5];  

陣列物件的slicesplice方法

陣列物件的slice和splice方法 之前被大神虐過一次,長長記性,專門把這兩個方法拿出來做一個比較,本文僅做學習筆記使用,如有任何意見或建議歡迎在評論區指出。 slice定義和用法 slice() 方法可從已有的陣列中返回選定的元素。 語法 arrayObj

indexOf()返回首次出現位置splice() 方法向/從數組中添加/刪除項目

span blog 位置 pre bsp col 方法 項目 sch indexOf(): http://www.w3school.com.cn/jsref/jsref_indexOf.asp splice(): http://www.w3school.com.cn/j

JavaScript陣列的迭代方法

JavaScript陣列的迭代方法 every():對陣列中的每一項執行給定函式,如果該函式對每一項都返回 true,則返回 true some():對陣列中的每一項執行給定函式,如果該函式對任一項返回 true,則返回 true filter():對陣列中的每一項執

String的slice、split方法;Array的slicesplice方法

1、字串的slice:用於從原字串取出子字串並返回,不改變原字串。它的第一個引數是子字串的開始位置,第二個引數是子字串的結束位置(不含該位置)。 var s="hello-word"; var r=s.slice(6); console.log(s);//hello-wor

JavaScript陣列的迭代方法(every、filter、forEach、map和some)

ES5 中為陣列定義了 5 個迭代方法。每個方法都接收兩個引數:要在每一項上執行的函式和(可選的)執行該函式的作用域物件——影響 this 的值。 傳入這些方法中的函式接收三個引數:陣列項的值、該項在陣列中的位置(索引)和陣列物件本身。 這 5 個方法都不會修改原陣列中包含的值。

JS中slicesplice區別

字串和陣列的操作雖然經常用,但是時間長了,細緻的部分忘記了,今天特地翻看了一下之前學習時候的筆記。 首先slice和splice猛的一看很相似,但是實際上用法差異性很大。 一、slice(可以用於陣列,也可以用於字串) 1.在陣列中的使用(擷取) slice(引數一,引數二)

JavaScript系列--JavaScript陣列高階函式reduce()方法詳解及奇淫技巧

一、前言 reduce() 方法接收一個函式作為累加器,陣列中的每個值(從左到右)開始縮減,最終計算為一個值。 reduce() 可以作為一個高階函式,用於函式的 compose。 reduce()方法可以搞定的東西,for迴圈,或者forEach方法有時候也可以搞定,那為啥要用reduce()?這個問

JavaScript陣列之傻傻分不清系列(splitspliceslice

因業務場景需求,需要將一個數組截斷而不需要影響原陣列。這裡來理解一下 slice,splice,split 2個引數:1、起點,從這個起點開始(從0開始算,包含它)2、結束點,到這個位置的前一個結束(即不包含它本身),未設定或者超出長度則預設到結尾由於它有不改變原陣列的特性,slice(0)可以深度拷貝一

JavaScript陣列的操作方法(concat、slicesplice

ECMAScript 為運算元組中的項提供了很多方法,其中最常用的有:concat( ) 、slice( ) 和 splice( ) 。 concat ( ) concat ( ) 方法可以基於當前陣列中的項建立一個新的陣列。具體來說,這個方法會先建立一個當前陣列的副本,然後將

javascript中substring()、slice()、substr()方法區別

start 指定 art bsp ava color 目的 開始 www substring()方法用於提取字符串中介於兩個指定下標之間的字符。 stringObject.substring(start,stop)slice() 方法可提取字符串的某個部分,並以新的字

陣列的常用方法(2)--es3.0:unshiftshiftreversesplice陣列的負位

unshift: 他是往數組裡面加東西的!!!而且還是在陣列的前面開始加 咱看看能不能和push那樣加好幾個進去。 可以! 現在怎麼寫呢?還和push一樣?   var arr = [1,2,3]; Array.protot

JavaScript 陣列:對比 slicesplice

對於 JavaScript 語言來講,入門者甚至是專家都會經常搞不清 slice 和 splice 這兩個方法。它們雖然名稱相似,但是功能卻完全不同。在使用中,可以通過選擇一個具有強語義表達性的 API 來減少混淆的發生。 陣列的 slice&n

JavaScript陣列去重(12種方法史上最全)

陣列去重,一般都是在面試的時候才會碰到,一般是要求手寫陣列去重方法的程式碼。如果是被提問到,陣列去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看。在真實的專案中碰到的陣列去重,一般都是後臺去處理,很少讓前端處理陣列去重。雖然日常專案用到的概率比較低

JavaScript陣列去重方法面試加分項!

陣列去重,一般都是在面試的時候才會碰到,一般是要求手寫陣列去重方法的程式碼。如果是被提問到,陣列去重的方法有哪些? 你能答出其中的10種方法,面試官絕對會對你刮目相看! 加分項!學起來! 在真實的專案中碰到的陣列去重,一般都是後臺去處理,很少讓前端處理陣列去重。

deleteremovesplice刪除陣列元素的區別

remove() 方法用於從下拉列表刪除選項。 語法 selectObject.remove(index) 引數 描述 index 必需。規定要刪除的選項的索引號。 說明 該方法從選項陣列的指定位置移除 <option> 元素。如果指定

如何利用selenium+python獲取click()方法後 請求返回的結果 包含: javascript 陣列操作正則表示式匹配返回陣列js兩個陣列取差集再去重 by qiweb 2018

技術交流q and v信:908701702  ,熊貓燒香 qiweb2018 python程式碼思路【開啟網頁--定位元素--點選請求--獲取請求後伺服器返回的資訊】: # coding=utf-8 from selenium import webdriver from

字串陣列擷取操作。 substring和substr以及slicesplicecharAt()的用法

slice可運算元組和字串,但substring和substr只能操作字串,splice只能運算元組。 1.substr() substr() 方法可在字串中抽取從 start 下標開始的指定數目的字元。 語法 stringObject.substr(st

javaScript刪除物件陣列中的nullundefined空物件陣列方法

這兩天在專案中遇到後臺需要傳的資料為不能有null,不能有空值,而這個資料又是一個龐大的物件,對組集合,所以寫了個方法來解決這個問題。為了兼具所有的種類型別,封裝了方法,程式碼如下: var obj = {        a: {            a_1: 'qwe',            a_2: