• JavaScript引用类型之Array类型一


    一、简介

    除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了。下面就来分析ECMAScript中的数组与其他语言中的数组的异同性:

    1、相同点:

    (1)他们都是数据的有序列表

    (2)语法和作用都类似

    2、不同点:

    (1)Array数组中的每一项可以保存任何类型的数据。也就是说,可以用数组的第一个位置来保存字符串,用第二位置来保存数值,第三个位置来保存对象的指针

    (2)Array数组的大小是可以动态调整的(部分其他的语言也有此特性),即随着数组中数据的添加自动增长以容纳新增数据。

    二、使用方式和相关方法介绍

    1、创建数组实例的方式有两种:

    1.1 第一种:使用new和Array构造函数,代码如下:

    var colors=new Array();

    1.1.1

    我们可以在创建数组实例的同时给该实例限定长度,代码如下:

    var colors=new Array(20);

    这样就创建了一个长度为20的数组。

    1.1.2

    我们也可以在创建数组的同时给他初始化,代码如下:

    var colors=new Array("red","blue","green");

    1.2  第二种方式是使用Array构造函数不使用new操作符,代码如下:

    var colors=Array("red","blue","green");

    1.3第三种方式使用数字字面量表示法(和Object类型的字面量表示法一样)。代码如下:

    var colors=["red","blue","green"];
    var colors=[];  //创建了一个空数组

    这里注意:通过对象字面创建的数组在创建时就不会调用Array构造函数了,这与Object引用类型创建实例使用对象字面量法一样它也不会调用Object构造函数!

    2、Array数组操作

    1、下面通过代码来讲解下Array数组的基本操作:

    var colors=["red","blue","green"];   //定义一个字符串数组
    alert(colors[0]);      //显示第一项
    colors[2]="black";   //修改第三项
    colors[3]="brown";  //新增第四项

    但是有一点需要注意,如下代码:

    var colors=["red","blue","green"];
    colors.length=2;
    alert(colors[2]);   //输出:undefined

    分析上面代码,当使用对象字面量定义了colors数组时,其初始长度是3,当我们修改其长度为2时,这是第三项就会被砍掉,然后我们在输出第三项,就会输出"undefined";

    上面代码是将长度缩小的情况,下面来分析如果将长度增加的情况,如下代码:

    var colors=["red","green","blue"];
    color.length=4;
    alert(colors[3]);  //输出:undefined

    分析上面的代码:初始化定义的长度为3,当将其长度设为4时,那么新增的那项的值就会被设为"undefined",新增的每一项都是!

    2、检测数组的方式

    在一些特殊应用开发中,我们经常需要判断一个对象是不是一个数组,所以ECMAScript 5提供了两种方法来判断一个对象是不是数组

    (1)对一个全局作用域而言,使用instanceof操作符就能得到满意的结果,代码如下:

    if(value instanceof Array){
        //对数组执行某些操作
    }

    (2)上面的判断方法是基于一个全局作用域下的,但是有些网页可能包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个不同版本的Array构造函数。如果你从一个框架向另一个框架传入一个数组,但是两个框架有各自的Array构造函数!

    所以为了解决这个问题,ECMAScript 5中新增了Array.isArray()方法。这个方法的作用是判断一个值到底是不是数组,而不管它实在哪个全局环境中创建的。代码如下:

    if(Array.isArray(value)){
        //对数组执行某些操作
    }

    注意:第二个方法有浏览器限制!

  • 相关阅读:
    system.exit(int status)中status值不同时的区别
    Java期末复习——主观题
    JfreeChart 乱码问题处理
    数据结构期末复习——还原二叉树(根据中序和后序遍历输出先序遍历)
    数据结构期末复习——还原二叉树(根据先序和中序遍历输出先序遍历)
    数据结构期末复习——树与二叉树一些知识点
    JavaScript数据结构与算法-队列练习
    JavaScript数据结构与算法-栈练习
    JavaScript数据结构与算法-列表练习
    JavaScript数据结构与算法-数组练习
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/5893254.html
Copyright © 2020-2023  润新知