在JavaScript中數組的reduce()方法文章中曾擴展了一個concat()的用法,現在詳細記錄一下。
定義和用法
concat() 方法用于連接兩個或多個數組。
該方法不會改變現有的數組,而僅僅會返回被連接數組的一個副本。
語法
arrayObject.concat(arrayX,arrayX,......,arrayX)
參數描述
arrayX必需。該參數可以是具體的值,也可以是數組對象。可以是任意多個。
var a = [0,1,2,3];
document.write(a.concat(4,5));
//輸出結果為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
返回值
返回一個新的數組。該數組是通過把所有 arrayX 參數添加到 arrayObject 中生成的。如果要進行 concat() 操作的參數是數組,那么添加的是數組中的元素,而不是數組。
復習數組對象
數組對象是使用單獨的變量名來存儲一系列的值。
數組對象的作用是:使用單獨的變量名來存儲一系列的值。
如果你有一組數據(例如:動物),存在單獨變量如下所示:
var animal1="rabbit";
var animal2="lion";
var animal3="cat";
數組可以用一個變量名存儲所有的值,并且可以用變量名訪問任何一個值。
數組中的每個元素都有自己的的ID,以便它可以很容易地被訪問到。
創建一個數組
創建一個數組,有三種方法。
下面的代碼定義了一個名為 myCars的數組對象:
1: 常規方式:
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"];
訪問數組
通過指定數組名以及索引號碼,你可以訪問某個特定的元素。
以下實例可以訪問myCars數組的第一個值:
var name=myCars[0];
以下實例修改了數組 myCars 的第一個元素:
myCars[0]="Opel";
[0] 是數組的第一個元素。[1] 是數組的第二個元素。
在一個數組中你可以有不同的對象
所有的JavaScript變量都是對象。數組元素是對象。函數是對象。
因此,你可以在數組中有不同的變量類型。
你可以在一個數組中包含對象元素、函數、數組:
myArray[0]=Date.now;
myArray[1]=myFunction;
myArray[2]=myCars;
數組方法和屬性
使用數組對象預定義屬性和方法:
var x = myCars.length
// myCars 中元素的數量var y=myCars.indexOf("Volvo")
// "Volvo" 值的索引值
注:文章中的定義等專業概念來自W3school 及 http://www.runoob.com 網站。
那么push()和concat()有何區別呢?
push 的定義是:向數組的末尾添加一個或更多元素,并返回新的長度。該方法會改變數組的長度。
<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 的定義是:連接兩個或更多的數組,并返回結果。該方法不會改變現有的數組,而僅僅會返回被連接數組的一個副本。
var a = [1,2];
document.write(a.concat(3,4,5));
//1,2,3,4,5
document.write(a.push(3,4,5));
//5
區別:
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 遇到數組參數時,把整個數組參數作為一個元素;而 concat 則是拆開數組參數,一個元素一個元素地加進去。
push 直接改變當前數組;concat 不改變當前數組。