在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 不改变当前数组。