ECMAScript Array slice()、splice()操作方法
ECMAScript為操作已經(jīng)包含在數(shù)組中的項提供了很多方法。其中,concat()方法可以基于當(dāng)前數(shù)組中的所有項創(chuàng)建一個新數(shù)組。具體來說,這個方法會先創(chuàng)建當(dāng)前數(shù)組一個副本,然后將接收到的參數(shù)添加到這個副本的末尾,最后返回新構(gòu)建的數(shù)組。在沒有給concat()方法傳遞參數(shù)的情況下,它只是復(fù)制當(dāng)前數(shù)組并返回副本。如果傳遞給concat()方法的是一或多個數(shù)組,則該方法會將這些數(shù)組中的每一項都添加到結(jié)果數(shù)組中。如果傳遞的值不是數(shù)組,這些值就會被簡單地添加到結(jié)果數(shù)組的末尾。下面來看一個例子:
var colors= ["red", "green", "blue"];
var colors2=colors. concat( "yellow", ["black", "brown"]);
南昌網(wǎng)絡(luò)公司工程師提醒,如果想要按照升級排序,則compare()函數(shù)中的return語句應(yīng)該返回value2 - valuel。
alert (colors); //red, green, blue
alert( colors2); //red, green, blue,yellow, black, brown
以上代碼開始定義了一個包含3個值的數(shù)組colors。然后,基于colors調(diào)用了concat()方法,并傳人字符串"yellow"和一個包含"black"和"brown"的數(shù)組。最終,結(jié)果數(shù)組colors2中包含了"red"、"green"、"blue"、"yellow"、"black"和"brown"。至于原來的數(shù)組colors,其值仍然保持不變。
下一個方法是slice(),它能夠基于當(dāng)前數(shù)組中的一或多個項創(chuàng)建一個新數(shù)組。slice()方法可以接受一或兩個參數(shù),即要返回項的起始和結(jié)束位置。在只有一個參數(shù)的情況下,slice()方法返回從該參數(shù)指定位置開始到當(dāng)前數(shù)組末尾的所有項。如果有兩個參數(shù),該方法返回起始和結(jié)束位置之間的項——但不包括結(jié)束位置的項,南昌網(wǎng)頁設(shè)計公司工程師提醒,注意,slice()方法不會影響原始數(shù)組。請看下面的例子:
var colors = ["red","green","blue","yellow","purple"];
var colors2=colors.slice(1);
var colors3=colors.slice(1,4);
alert( colors2); //green,blue,yellow,purple
alert( colors3); //green,blue,yellow
在這個例子中,開始定義的數(shù)組colors包含5項。調(diào)用slice()并傳人1會得到一個包含4項的新數(shù)組;因為是從位置1開始復(fù)制,所以會包含"green"而不會包含"red"。這個新數(shù)組colors2中包含的是"green"、"blue"、"yellow"和"purple"。接著,我們再次調(diào)用slice()并傳入了1和4,表示復(fù)制從位置1開始,到位置3結(jié)束。結(jié)果數(shù)組colors3中包含了"green"、"blue"和"yellow"。
南昌網(wǎng)站建設(shè)公司百恒網(wǎng)絡(luò)前端開發(fā)工程師提醒廣大站長及從事企業(yè)網(wǎng)站建設(shè)開發(fā)技術(shù)人員,如果slice()方法的參數(shù)中有一個負(fù)數(shù),則用數(shù)組長度加上該數(shù)來確定相應(yīng)的位置.例如,在一個包含5項的數(shù)組上調(diào)用slice(-2,-1)與調(diào)用slice(3,4)得到的結(jié)果相同.如果結(jié)束位置小于起始位置,則返回空數(shù)組.
下面我們來介紹splice()方法,這個方法恐怕要算是最強(qiáng)大的數(shù)組方法了,它有很多種用法。
splice()的主要用途是向數(shù)組的中部插入項,但使用這種方法的方式則有如下3種。
刪除——可以刪除任意數(shù)量的項,只需指定2個參數(shù):要刪除的第一項的位置和要刪除的項數(shù)。例如,splice(O,2)會刪除數(shù)組中的前兩項。
插入——可以向指定位置插入任意數(shù)量的項,只需提供3個參數(shù):起始位置、0(要刪除的項數(shù))和要插入的項。如果要插入多個項,可以再傳人第四、第五,以至任意多個項。例如, splice(2,o,"red","green")會從當(dāng)前數(shù)組的位置2開始插入字符串"red"和"green"。
替換——可以向指定位置插入任意數(shù)量的項,且同時刪除任意數(shù)量的項,只需指定3個參數(shù):起始位置、要刪除的項數(shù)和要插入的任意數(shù)量的項。插入的項數(shù)不必與刪除的項數(shù)相等。例如,splice(2,l,"red",ugreen")會刪除當(dāng)前數(shù)組位置2的項,然后再從位置2開始插入字符串"red"和"green"。
splice()方法始終都會返回一個數(shù)組,該數(shù)組中包含從原始數(shù)組中刪除的項(如果沒有刪除任何項,則返回一個空數(shù)組)。下面的代碼展示了上述3種使用splice()方法的方式:
var colors=["redn, "green", "blue"];
var removed=colors.splice(O,1); //刪除第一項
alert (colors); //green,blue
alert (removed); //red,返回的數(shù)組中只包含一項
removed=colors.splice(1,0,"yellow", "orange"); //從位置1開始插入兩項
alert (colors); //green,yellow, orange,blue
alert( removed); //返回的是一個空數(shù)組
removed=colors.splice(1,l,"red","purple"); //插入兩項,刪除一項
alert (colors); //green, red, purple, orange. blue
alert( removed); //yellow,返回的數(shù)組中只包含一項
上面的例子首先定義了一個包含3項的數(shù)組colors。第一次調(diào)用splice()方法只是刪除了這個數(shù)組的第一項,之后colors還包含"green"和"blue"兩項。第二次調(diào)用splice()方法時在位置1插入了兩項,結(jié)果colors中包含"green"、"yellow"、"orange"和nblue"。這一次操作沒有刪除項,因此返回了一個空數(shù)組。最后一次調(diào)用splice()方法刪除了位置1處的一項,然后又插入了"red"和"purple"。在完成以上操作之后,數(shù)組colors中包含的是"green"、"red"、"purple"、"orange"和"blue"。
希望本文對廣大站長或從事企業(yè)網(wǎng)站建設(shè)公司的團(tuán)隊有所幫助,如對此不太理解的,可以與南昌做網(wǎng)站公司百恒網(wǎng)絡(luò)技術(shù)部聯(lián)系。我們很高興與廣大站長和從事企業(yè)網(wǎng)站建設(shè)公司技術(shù)人員分享我們的技術(shù)和經(jīng)驗。