JS引用类型之Array

ECMAScript中的数组可以说是比较神奇了, ECMAScript中定义的数组每一项可以保存不同的数据类型,如第一项为字符串,第二项为数值等等

 1. 那怎么创建一个数组呢?

方法和创建对象实例类似

(1)通过new + 构造函数创建。此处的构造函数就是Array了

    即 var arr = new Array()

  也可以传递参数 var arr = new Array(20) 则数组长度为20

  或者传递字符串 var arr = new Array('a','b')此处创建了包含2个字符串值的数组

  使用Array 构造函数时也可以省略new 操作符

(2)用字面量形式创建数组

       var color = ['red', 'blue'];  //创建包含两个字符串的数组

       var name = [];     //  创建空数组

       var arr = [1,2,];   // 创建包含两项或三项的数组

       var p = [,,,,,];  //创建包含5/6项的数组

      前两种好懂,解释一下最后两种

      为什么会有两种可能,原因是不同浏览器的理解不同,在IE8之前,会认为第三种创建了 项为1,2和undefined的数组 

   在其他浏览器中,会认为创建了1和2两项

同理 ,最后一种也是这样

    但是要注意了,省略值的每一项都会获得undefined值

2. 数组的length 可变

   如 var arr = [1,2]

  arr[2] = 3

  此处数组的长度为2,而要访问第三项,此处会默认为数组添加一项,长度变为3

  反之,如果将数组长度设置为1

 arr.length =  1;

 则数组的最后一项会被删除,再访问arr[1]  输出undefined

若arr.length = 4; 超出原来长度了,则多余的项都会获得undefined值

 

3. 检测数组

 如何检测一个对象是不是数组呢?

if(value instanceof Array) {

    // 操作..

}

instanceof操作符的问题在于,它只有一个全局执行环境

若网页中包含多个框架,则有多个不同全局执行环境

从而存在多个版本的Array构造函数

如果你从一个框架向另一个框架传递数组,那么传入的数组和第二个框架原生的数组构造函数不一样

 

为了解决这个问题,ECMAScript 新增了Array.isArray()方法,目的是确定这个值是不是数组,不限于执行环境

4.转换方法

主要是数组转为字符串;若数组中值为null或undefined ,转换时返回空字符串

  通常可以用toString()方法,返回每个值的字符串形式用逗号拼接起来

  但是更常用的是join()方法

  接受一个参数,即用作分隔符的字符串;不传递参数默认为逗号

  ['a','b','c'].join('+')  //返回 a+b+c

转载于:https://www.cnblogs.com/aizzz/p/9728030.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值