JavaScript 连接两个或多个数组的方法

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 想要做单元测试,第一步先给自己洗脑,相信单元测试是牛逼的,然后在开始学习。洗脑的鸡汤文,后续再补上。 基本单元测试...
    轲叶阅读 283评论 0 1
  • 曾经那执着的的承诺 当我们想起来的时候 只看到的是烟消云散 从此我便不再对谁承诺 从此我也不在让谁许下诺言 因为所...
    窮奇阅读 216评论 0 0