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

JS引用类型之Array的更多相关文章

  1. 从一个简单例子来理解js引用类型指针的工作方式

    <script> var a = {n:1}; var b = a; a.x = a = {n:2}; console.log(a.x);// --> undefined conso ...

  2. JavaScript高级编程——引用类型、Array数组使用、栈方法

    JavaScript高级编程——引用类型.Array数组使用.栈方法 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999 ...

  3. 观V8源码中的array.js,解析 Array.prototype.slice为什么能将类数组对象转为真正的数组?

    在官方的解释中,如[mdn] The slice() method returns a shallow copy of a portion of an array into a new array o ...

  4. js中的Array

    js中的Array 啥是ArrayLike对象 类似,下面这种对象的就是ArrayLike var arraylike = { 0: "a", 1: "b", ...

  5. JS arguments转array

    JS arguments转array? Array.prototype.slice.call(arguments)

  6. 初心不负 笔记-JS高级程序设计-引用类型篇-Array

    ES3方法集合: 1join()方法,将一个数组里面的所有元素转换成字符串,然后再将他们连接起来返回一个字符串,通过制定的符号,默认值为逗号.不会改变原数组 ,,,,]; a.join(); &quo ...

  7. JS引用类型之——数组

    前言 数组作为JS中非常常用的引用类型,其功能是非常强大滴,今天小猪就彻底的看了下它.为了防止猪脑子不够用所以记录在案呐 1.数组的创建 var arrayObj = new Array(); //创 ...

  8. js引用类型数组去重-对象标记法

    前言 Js数组去重已经有很多种实现方式:包括逐个检索对比(使用Array.property.indexOf),先排序后对比,使用hash表,利用ES6中的Set()等.这些数组去重办法中速度最快的是h ...

  9. JS 引用类型

    object类型: js中大多数引用类型都是Object类型的实例.创建object实例有两种方法:第一种是使用new操作符后跟Object构造函数. var obj = new Object();o ...

随机推荐

  1. 使用layer弹出Ueditor实现父子传值

    Layear的代码:     function tankuang() {        layer.open({            type: 2,            title: false ...

  2. 腾讯应用宝Android 应用加固(乐固)操作说明(转)

    此处引用腾讯云对加固的优点说明如下: 为什么应用需要加固? 若应用不做任何安全防护,极易被病毒植入.广告替换.支付渠道篡改.钓鱼.信息劫持等,严重侵害开发者的利益. 应用进行安全防护,防止应用分发后, ...

  3. Oracle数据库查看表空间是否为自增的

    表空间是有数据文件组成的,所以看表空间是否自增即看数据文件,如下查自增的表空间: select tablespace_name,file_name,autoextensible from dba_da ...

  4. CentOS6—HAProxy安装与配置

    概述 Haproxy下载地址:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/ 关闭SElinux.配置防火墙 1.vi /etc/selinux/co ...

  5. CentOS6— Redis安装(转和延续)

    Part I. Redis安装(转载部分) 一.安装(官网地址 http://redis.io/download) wget http://download.redis.io/redis-stable ...

  6. Neo4j导入本地csv问题

    把要导入的文件放到D盘,LOAD CSV WITH HEADERS FROM "file:///D:/xx.csv" AS line create (:node); 总提示输入错误

  7. MySQL InnoDB中的事务隔离级别和锁的关系

    前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式.同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力. ...

  8. windows云服务器数据迁移

    刚入职,第一个任务是完成windows腾讯云到windows华为云上的MySQL数据库迁移.之前都是在CentOS上搞,感觉没啥难度,一口答应,没想到各种坑接踵而来.次数不再叙述坑都有哪些了,说说怎么 ...

  9. Python题目练习(二)

    1.如何实现对python列表去重,并保持原来顺序 li = [1,2,5,3,1,6,3,8,0,3,2,4] l = [] for i in li: if i not in l: l.append ...

  10. Linux下C语言的socket网络编程

    关于详细的服务器建立的步骤以及相关的socket套接字的知识我已经在python socket编程的文章中提到过了,大家可以参看那一篇博客来历接socket套接字编程的内容,由于要是用C相关的API所 ...