zoukankan      html  css  js  c++  java
  • 你不知道的JavaScript(二)数组

    作为一种线性数据结构,几乎每一种编程语言都支持数组类型。和c++、java这些强类型的语言相比,JavaScript数组有些不同,它可以存放任意类型的值。上节中有提到过JS中任意类型的值都可以赋值给任何一个变量,所以从数组中取出不同类型的值时也就不存在类型转换安全问题。

    JS数组的使用非常简单,只是有些细节可能容易被忽略,下面是数组的定义:

        <script type="text/javascript">
            function func(){
                console.log("func function!");
            }
            var obj = {
                name:"Jane",
                age:30
            }
            var arr = [1,func,obj];
            alert(typeof arr[1]);//function
            alert(arr.length);//3
        </script>

    数组定义很简单,通过一个中括号[ ]来声明,可以在声明时指定元素值,每个元素用逗号隔开,元素可以是任意类型。上节提到过,数组也属于object类型,我们可以通过它的length属性来获取数组的长度。

    JS数组的长度是不固定的,可以在程序中随意增加或减少数组长度。

        <script type="text/javascript">
            var arr = [];
            arr[0] = 1;
            arr[1] = 2;
            alert(arr.length);//2
            arr[2] = 3;
            alert(arr.length);//3
        </script>

    在c++、java这些强类型的语言中数组的下标只能是整型或者char类型,JS数组并不是这样的,它的下标可以是上节讲到的数据类型中的任何一种,看下面的例子:

        <script type="text/javascript">
            function func(){
            };
            var arr = [];
            arr[0] = 1;
            arr[1.3] = 3;
            alert(arr[1.3]);//3
            arr["age"] = 23;
            alert(arr["age"]);//23
            alert(arr.age);//23
            arr[undefined] = "undef";
            alert(arr[undefined]);//undef
            arr[func] = "func";
            alert(arr[func]);//func
            alert(arr.length);//1
        </script>

    有点凌乱了吧,我们可以將一个小数作为数组下标arr[1.3]=3,然后可以通过arr[1.3]获取下标的值。字符串作为下标时稍微特殊一点,我们不仅可以通过arr[“age”]来获取下标对应的值,还可以使用arr.age这种形式。我们甚至可以定义一个函数func,使用函数名作为下标。

    最后我们使用arr.length获取数组的长度,发现长度为1,这是怎么回事呢?

    我们来通过代码分析一下:

        <script type="text/javascript">
            function func(){};
            var arr1 = [];
            arr1[0] = 1;
            arr1[4.3] = 1;
            alert(arr1.length);//1
    
            var arr2 = [];
            arr2[0] = 1;
            arr2[4] = 1;
            alert(arr2.length);//5
    
            var arr3 = [];
            arr3[0] = 1;
            arr3[4] = 1;
            arr3["hello"] = "hello";
            alert(arr3.length);//5
        </script>

    可以看到通过length属性获得数组的长度实际上并不准确,它的值是数组的最大整数下标+1。

    为了避免数组下标出现不连续的情况,我们通常將数组作为栈来操作,需要增加数组长度并向数组中添加元素时调用push函数,减少数组长度同时移除元素可以调用pop方法。

    案例代码如下:

        <script type="text/javascript">
            var func = function(){};
            var arr = [];
            arr.push(func);
            arr.push(1);
            arr.push(10);
            arr.push("hello");
            arr.push("world");
            for(i=0;i<arr.length;i++)
            {
                document.writeln(arr[i]);
            }
            arr.pop();//去除最后一个元素,并返回元素值
            document.writeln("<br/>");
            for(i=0;i<arr.length;i++)
            {
                document.writeln(arr[i]);
            }
        </script>

    页面输出:
    这里写图片描述

  • 相关阅读:
    hbase权威指南PDF下载
    流畅的pythonPDF下载
    现代操作系统PDF下载
    Kafka权威指南PDF下载
    java核心技术卷1PDF下载
    计算机网络自顶向下方法PDF下载
    git gitlab 部署
    MySQL 索引、事务与存储引擎(详细解读)
    QT: Layout布局间消除间隙(修改layout内置参数)
    数据结构---归并排序
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468848.html
Copyright © 2011-2022 走看看