在JavaScript中數(shù)組的reduce()方法文章中曾擴(kuò)展了一個concat()的用法毫缆,現(xiàn)在詳細(xì)記錄一下。
定義和用法
concat() 方法用于連接兩個或多個數(shù)組购披。
該方法不會改變現(xiàn)有的數(shù)組淮野,而僅僅會返回被連接數(shù)組的一個副本。
語法
arrayObject.concat(arrayX,arrayX,......,arrayX)
參數(shù)描述
arrayX必需稼跳。該參數(shù)可以是具體的值,也可以是數(shù)組對象吃沪√郎疲可以是任意多個。
var a = [0,1,2,3];
document.write(a.concat(4,5));
//輸出結(jié)果為0,1,2,3,4,5
var a = [1,2];
var b = [4,5,6];
document.write(a.concat(b));
//1,2,3,4,5,6
返回值
返回一個新的數(shù)組票彪。該數(shù)組是通過把所有 arrayX 參數(shù)添加到 arrayObject 中生成的红淡。如果要進(jìn)行 concat() 操作的參數(shù)是數(shù)組,那么添加的是數(shù)組中的元素抹镊,而不是數(shù)組锉屈。
復(fù)習(xí)數(shù)組對象
數(shù)組對象是使用單獨(dú)的變量名來存儲一系列的值荤傲。
數(shù)組對象的作用是:使用單獨(dú)的變量名來存儲一系列的值垮耳。
如果你有一組數(shù)據(jù)(例如:動物),存在單獨(dú)變量如下所示:
var animal1="rabbit";
var animal2="lion";
var animal3="cat";
數(shù)組可以用一個變量名存儲所有的值遂黍,并且可以用變量名訪問任何一個值终佛。
數(shù)組中的每個元素都有自己的的ID,以便它可以很容易地被訪問到雾家。
創(chuàng)建一個數(shù)組
創(chuàng)建一個數(shù)組铃彰,有三種方法。
下面的代碼定義了一個名為 myCars的數(shù)組對象:
1: 常規(guī)方式:
var myCars=new Array();
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
2: 簡潔方式:
var myCars=new Array("Saab","Volvo","BMW");
3: 字面:
var myCars=["Saab","Volvo","BMW"];
訪問數(shù)組
通過指定數(shù)組名以及索引號碼芯咧,你可以訪問某個特定的元素牙捉。
以下實(shí)例可以訪問myCars數(shù)組的第一個值:
var name=myCars[0];
以下實(shí)例修改了數(shù)組 myCars 的第一個元素:
myCars[0]="Opel";
[0] 是數(shù)組的第一個元素。[1] 是數(shù)組的第二個元素敬飒。
在一個數(shù)組中你可以有不同的對象
所有的JavaScript變量都是對象邪铲。數(shù)組元素是對象。函數(shù)是對象无拗。
因此带到,你可以在數(shù)組中有不同的變量類型。
你可以在一個數(shù)組中包含對象元素英染、函數(shù)揽惹、數(shù)組:
myArray[0]=Date.now;
myArray[1]=myFunction;
myArray[2]=myCars;
數(shù)組方法和屬性
使用數(shù)組對象預(yù)定義屬性和方法:
var x = myCars.length
// myCars 中元素的數(shù)量var y=myCars.indexOf("Volvo")
// "Volvo" 值的索引值
注:文章中的定義等專業(yè)概念來自W3school 及 http://www.runoob.com 網(wǎng)站被饿。
那么push()和concat()有何區(qū)別呢?
push 的定義是:向數(shù)組的末尾添加一個或更多元素搪搏,并返回新的長度狭握。該方法會改變數(shù)組的長度。
<script type="text/javascript">
var arr = new Array(3)
arr[0] = "a"
arr[1] = "b"
arr[2] = "c"
document.write(arr + "<br />") //a,b,c
document.write(arr.push("d") + "<br />") //4
document.write(arr) //a,b,c,d
</script>
concat 的定義是:連接兩個或更多的數(shù)組疯溺,并返回結(jié)果哥牍。該方法不會改變現(xiàn)有的數(shù)組,而僅僅會返回被連接數(shù)組的一個副本喝检。
var a = [1,2];
document.write(a.concat(3,4,5));
//1,2,3,4,5
document.write(a.push(3,4,5));
//5
區(qū)別:
var a = [1,2];
document.write(a.concat([3,4,5]));
//1,2,3,4,5
document.write(a.push([3,4,5]));
//3
push 遇到數(shù)組參數(shù)時嗅辣,把整個數(shù)組參數(shù)作為一個元素;而 concat 則是拆開數(shù)組參數(shù)挠说,一個元素一個元素地加進(jìn)去澡谭。
push 直接改變當(dāng)前數(shù)組;concat 不改變當(dāng)前數(shù)組损俭。