溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

數(shù)組的一些操作方法,如join(),split(),slice()等

發(fā)布時(shí)間:2020-07-20 08:58:07 來(lái)源:網(wǎng)絡(luò) 閱讀:3569 作者:韓立偉 欄目:web開(kāi)發(fā)

數(shù)組的一些方法:

1.join()和split()方法
<script type="text/javascript">
var x;
var a=new Array();
a[0]="XHTML";
a[1]="CSS";
a[2]="JavaScript";
alert(a.join());
alert(typeof(a.join));
alert(typeof(a));
</script>
join() 方法用于把數(shù)組中的所有元素放入一個(gè)字符串。

元素是通過(guò)指定的分隔符進(jìn)行分隔的。
指定分隔符方法join("#");其中#可以是任意


與之相反的是split()方法:用于把一個(gè)字符串分割成字符串?dāng)?shù)組.
stringObject.split(a,b)這是它的語(yǔ)法
a是必須的決定個(gè)從a這分割
b不是必須的,可選。該參數(shù)可指定返回的數(shù)組的最大長(zhǎng)度 。如果設(shè)置了該參數(shù),返回的子串不會(huì)多于這個(gè)參數(shù)指定的數(shù)組。如果沒(méi)有設(shè)置該參數(shù),整個(gè)字符串都會(huì)被分割,不考慮它的長(zhǎng)度。

注意返回的數(shù)組中不包括a本身;


提示和注釋
注釋?zhuān)喝绻芽兆址?("") 用作 a,那么 stringObject 中的每個(gè)字符之間都會(huì)被分割。

注釋?zhuān)篠tring.split() 執(zhí)行的操作與 Array.join 執(zhí)行的操作是相反的。

看例子
<script type="text/javascript">
var str="how are you?";
document.write(str.split("")+"<br />");
document.write(str.split(" ")+"<br />");
document.write(str.split("",3)+"<br />");
</script>
返回
h,o,w, ,a,r,e, ,y,o,u,?
how,are,you?
h,o,w

一下兩種可以把句子分割成單詞
var words = sentence.split(' ')或者使用正則表達(dá)式作為 a:

var words = sentence.split(//s+/)


2.
reverse()方法

reverse() 方法用于顛倒數(shù)組中元素的順序。

語(yǔ)法:

arrayObject.reverse()

注意:該方法會(huì)改變?cè)瓉?lái)的數(shù)組,而不會(huì)創(chuàng)建新的數(shù)組。


<script type="text/javascript">
var a=["xhtml","css","javascript"];

var b=a.reverse();
document.write(a);
document.write(b);
</script>


var b=a.reverse();相當(dāng)于

a.reverse();

var b=a;


reverse()方法會(huì)改變?cè)瓉?lái)的數(shù)組,所以上例的返回值a這個(gè)數(shù)組也改變!


3.

sort()方法

sort() 方法用于對(duì)數(shù)組的元素進(jìn)行排序。

語(yǔ)法:arrayObject.sort(sortby)

注意: 對(duì)數(shù)組的引用。請(qǐng)注意,數(shù)組在原數(shù)組上進(jìn)行排序,不生成副本。

看這個(gè)例子說(shuō)明這點(diǎn)

<script type="text/javascript">
var a=["dd","cc","ee","aa"];
a.sort();
var b=a;
document.write(a+"<br />");
document.write(b);
</script>

返回 aa,cc,dd,ee

    aa,cc,dd,ee


其中sortby是可選的值

*如果調(diào)用該方法時(shí)沒(méi)有使用參數(shù),將按字母順序?qū)?shù)組中的元素進(jìn)行排序,說(shuō)得更精確點(diǎn),是按照字符編碼的順序進(jìn)行排序。要實(shí)現(xiàn)這一點(diǎn),首先應(yīng)把數(shù)組的元素都轉(zhuǎn)換成字符串(如有必要),以便進(jìn)行比較。

*如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序,就需要提供比較函數(shù),該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說(shuō)明這兩個(gè)值的相對(duì)順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b,其返回值如下:

  • 若 a 小于 b,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,則返回一個(gè)小于 0 的值。

  • 若 a 等于 b,則返回 0。

  • 若 a 大于 b,則返回一個(gè)大于 0 的值。

例子:

<script type="text/javascript">
function myfunction(x,y){
 return x-y;
}
var a=new Array(3);
a[0]="1111";
a[1]="22";
a[2]="333";
alert(a);
alert(a.sort());
alert(a.sort(myfunction));
</script>

有參數(shù)的排序由參數(shù)的大小決定

可以這么理解

要判斷的是數(shù)組里面任意兩個(gè)成員的值,而返回值決定了這兩個(gè)成員按什么規(guī)律排序

這里因?yàn)樵瓟?shù)組里都是數(shù)值型,所以這里的x,y就是數(shù)值型,x>y時(shí)返回正值,所以x將放在y后面,x=y時(shí)不變,x<y時(shí)返回負(fù)值此時(shí)x將位于y之前


4.slice()方法

可從已有的數(shù)組中返回選定的元素.

語(yǔ)法
arrayObject.slice(start,end)

start 必需。規(guī)定從何處開(kāi)始選取。如果是負(fù)數(shù),那么它規(guī)定從數(shù)組尾部開(kāi)始算起的位置。也就是說(shuō),-1 指最后一個(gè)元素,-2 指倒數(shù)第二個(gè)元素,以此類(lèi)推。
end 可選。規(guī)定從何處結(jié)束選取。該參數(shù)是數(shù)組片斷結(jié)束處的數(shù)組下標(biāo)。如果沒(méi)有指定該參數(shù),那么切分的數(shù)組包含從 start 到數(shù)組結(jié)束的所有元素。如果這個(gè)參數(shù)是負(fù)數(shù),那么它規(guī)定的是從數(shù)組尾部開(kāi)始算起的元素。

返回值
返回一個(gè)新的數(shù)組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。

注意不包含end元素?。。。。。。。。。?!

該方法并不會(huì)修改數(shù)組,而是返回一個(gè)子數(shù)組。

如果想刪除數(shù)組中的一段元素,應(yīng)該使用方法 Array.splice()。

例子:

start和end都是數(shù)組下標(biāo)數(shù)字,且返回的數(shù)組里不包括end
slice不會(huì)改變 原來(lái)的數(shù)組
<script type="text/javascript">
var a=[99,8,2,6,4,4,6];
b=a.slice(1,4);
document.write(b+"<br />");
document.write(a);
</script>
返回
8,2,6
99,8,2,6,4,4,6


5.看下splice()方法

用于插入、刪除或替換數(shù)組的元素。

語(yǔ)法
arrayObject.splice(index,howmany,element1,.....,elementX)

參數(shù)描述:

index 必需。規(guī)定從何處添加/刪除元素。
該參數(shù)是開(kāi)始插入和(或)刪除的數(shù)組元素的下標(biāo),必須是數(shù)字。
howmany 必需。規(guī)定應(yīng)該刪除多少元素。必須是數(shù)字,但可以是 "0"。
如果未規(guī)定此參數(shù),則刪除從 index 開(kāi)始到原數(shù)組結(jié)尾的所有元素。
element1 可選。規(guī)定要添加到數(shù)組的新元素。從 index 所指的下標(biāo)處開(kāi)始插入。
elementX 可選??上驍?shù)組添加若干元素。

返回值
如果從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數(shù)組。

例子:
<script type="text/javascript">
var a=[11,22,33];
b=a.splice(0,1,"x","y",[6,7,8]);
document.write(b+"<br />");//返回被刪除的元素的數(shù)組
a=a.join("|");
document.write(a);//splice()不能將它的參數(shù)展開(kāi),concat()可以``
</script>

返回:


x|y|6,7,8|22|33


說(shuō)明
splice() 方法可刪除從 index 處開(kāi)始的零個(gè)或多個(gè)元素,并且用參數(shù)列表中聲明的一個(gè)或多個(gè)值來(lái)替換那些被刪除的元素。

splice會(huì)直接對(duì)數(shù)組進(jìn)行修改

例子一:

<script type="text/javascript">
var a=[99,8,2,6,4,4,6];
b=a.splice(1,4,"x","y");
document.write(b+"<br />");
document.write(a);
</script>
返回
8,2,6,4
99,x,y,4,6

例子二:

<script type="text/javascript">
var a  = [1,2,3];
a = a.splice(0,2);
alert(a);  // 輸出 1, 2   這里a=[1,2]
a = a.splice(1,2);
alert(a);  //  輸出 2   這里a=[2]
a = a.splice(1,2);
alert(a);  //  沒(méi)有刪除任何數(shù)組 , 輸出 空 數(shù)組
</script>
更好的說(shuō)明了splice會(huì)直接對(duì)數(shù)組進(jìn)行修改

注意:和concat() 不同,splice并不將他插入的參數(shù)展開(kāi)。也就是如果插入一個(gè)數(shù)組,他就是插入數(shù)組本身,還不是數(shù)組的元素。
而concat()插入數(shù)組的話,就會(huì)把數(shù)組展開(kāi),插入數(shù)組中的元素,不過(guò)當(dāng)插入的數(shù)組里
還有數(shù)組的時(shí)候,就不會(huì)展開(kāi)了。

6.concat()方法

concat() 方法用于連接兩個(gè)或多個(gè)數(shù)組。

注意:該方法不會(huì)改變現(xiàn)有的數(shù)組 ,而僅僅會(huì)返回被連接數(shù)組的一個(gè)副本。

語(yǔ)法
arrayObject.concat(arrayX,arrayX,......,arrayX)

它返回一個(gè)新的數(shù)組。該數(shù)組是通過(guò)把所有 arrayX 參數(shù)添加到 arrayObject 中生成的。如果要進(jìn)行 concat() 操作的參數(shù)是數(shù)組,那么添加的是數(shù)組中的元素,而不是數(shù)組。

例子:

<script type="text/javascript">
var a=[1,2,3];
var b=a.concat(1);
document.write(b+"<br />");//返回1,2,3,1
</script>

當(dāng)參數(shù)是數(shù)組時(shí),添加的是數(shù)組中的元素

當(dāng)參數(shù)里包含數(shù)組時(shí),返回的數(shù)組不能拆開(kāi)

例子

<script type="text/javascript">
var a=[1,2,3];
var b=[3,4,[5,6,7]];
var c=a.concat(b);
d=c.join("#")
document.write(a+"<br />");//1,2,3
document.write(b+"<br />");//3,4,5,6,7
document.write(c+"<br />");//1,2,3,3,4,5,6,7
document.write(d);//1#2#3#3#4#5,6,7
</script>


代碼一:
<script type="text/javascript">
var a=[1,2,3];
var b=[a,b,c];
var c=["x","y","z"];
var js=a.concat(b,c);
document.write(js+"<br />");
document.write(js.join("|"))
</script>

返回:
1|2|3|1,2,3|||x|y|z
這里為什么會(huì)返回一些空值??
我理解:
因?yàn)関ar b=[a,b,c]里面的a已經(jīng)賦了值所以返回1,2,3  而b c還沒(méi)有賦值所以返回一個(gè)空白···

下面這個(gè)沒(méi)有個(gè)變量a賦值,返回了undefined
代碼二:
<script type="text/javascript">
var a;
document.write(a);
</script>

但是如果是聲明的a為一個(gè)數(shù)組的話就返回了空白··
<script type="text/javascript">
var a=new Array();
document.write(a);
</script>

7.

push() 方法 可向數(shù)組的末尾添加一個(gè)或多個(gè)元素,并返回新的長(zhǎng)度 。 // 注意是返回一個(gè)長(zhǎng)度
語(yǔ)法
arrayObject.push(newelement1,newelement2,....,newelementX)參數(shù) 描述
newelement1 必需。要添加到數(shù)組的第一個(gè)元素。
newelement2 可選。要添加到數(shù)組的第二個(gè)元素。
newelementX 可選。可添加多個(gè)元素。

返回值
把指定的值添加到數(shù)組后的新長(zhǎng)度。

說(shuō)明
push() 方法可把它的參數(shù)順序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是創(chuàng)建一個(gè)新的數(shù)組。 push() 方法和 pop() 方法使用數(shù)組提供的先進(jìn)后出棧的功能。

提示和注釋
注釋?zhuān)涸摲椒〞?huì)改變數(shù)組的長(zhǎng)度。

提示:要想數(shù)組的開(kāi)頭添加一個(gè)或多個(gè)元素,請(qǐng)使用 unshift() 方法。

例子(unshift和push類(lèi)似)
<script type="text/javascript">
var array1 = new Array("1","2","3","4");
   array1.push("5");
   document.write(array1+"<br />");
   document.write(array1);   //返回值一樣說(shuō)明該方法直接修改了數(shù)組
</script>

另一對(duì):

shift() 方法用于把數(shù)組的第一個(gè)元素從其中刪除,并返回第一個(gè)元素的值。

<script type="text/javascript">
var array1 = new Array("1","2","3","4");
   array1.push("5");
   document.write(array1+"<br />"); //輸出  1, 2 ,3 ,4,5
   array2=array1.shift()
   document.write(array2+"<br />"); //輸出1
   document.write(array1);//輸出  1, 2 ,3 ,4
</script>
pop()為刪除最后一個(gè)元素,且返回最后一個(gè)元素
<script type="text/javascript">
var array1 = new Array("1","2","3","4");

  array1.push("5");
   document.write(array1+"<br />"); //輸出  1, 2 ,3 ,4,5
   array1.pop()
   document.write(array1+"<br />");//輸出  1, 2 ,3 ,4
   document.write(array1.pop());//輸出4
</script>


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI