• 剑指前端(前端入门笔记系列)——数组(基本语法)


    数组——基本语法
      除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了,而且ECMAScript中的数组与其他语言中的数组有着相当大的区别。它的每一项可以保存任何类型的数据(也就是一个数组里面可以包含不同数据类型的值)。而且,数组的大小是动态的,随着数据的增删而增大减小。
     
    创建
    1.使用Array构造函数
    //不指定数组长度和元素,返回一个无长度空数组
    var arr = new Array();
    //只指定数组长度,返回一个有长度的空数组
    var arr = new Array(20);
    //只指定数组内的元素,返回一个有长度的非空数组
    var arr = new Array("AI-fisher",true,undefined,{name:"admin"},[5,6,7],function(){},NaN,null,18);
    2.使用字面量表示法创建
    //不指定数组长度,返回一个无长度空数组
    var arr = [];
    //只指定数组内的元素,返回一个有长度的非空数组
    var arr = ["AI-fisher",true,undefined,{name:"admin"},[5,6,7],function(){},NaN,null,18];
    【注】:
    (1)用构造函数创建数组,赋值一个数值型数据如果是NaN的话,报错长度无效)识别为指定数组长度,其他情况都识别为指定具体元素,其他两种赋值都与字面量创建方式相对应;
    (2)不要在最后一个元素后面写一个“,”因为在IE8及之前版本会多识别一个元素,那个元素的值是undefined。开发人员大多青睐于字面量语法,因为不但代码少,而且能给人一种封装数据的感觉。
     
    表示
    数组中的每个数据都被赋予一个索引,索引的范围为[0,arr.length-1]内的整数(arr为一个数组),例如上面指定数组内元素的例子中,结果展开是这样:
    我们来遍历一下这个数组:
    var arr = ["AI-fisher",true,undefined,{name:"admin"},[5,6,7],function(){},NaN,null,18];
    for(i=0;i<=arr.length-1;i++){
        console.log("arr[" + i + "]的值为:" + arr[i] + ",类型为:"+ typeof(arr[i]));
    }
    【注】:
      数组的第一位和最后一位比较特别,因为不管数组怎么变化,第一位的索引一直是0,表示为arr[0],而最后一位虽然具体的位序会随之变化,但是如果用arr[length-1]表示的话,就没有问题了,因为length是随着数组的长度动态变化的。
     
    操作(通过自身的属性)
    知道了怎么表示(查看)数组内的每个元素,那我们就可以来操作数组了(不涉及到数组方法的情况下),数据的操作不外乎增删改查:
    查(访问):
    之前提到了(就是通过索引),也是其他三个基本操作的支柱性操作,因为其他操作的执行都涉及到访问元素
    增:
    var arr = ["AI-fisher",true];
    console.log("打印不存在的元素为:" + arr[10]);
    arr[10] = "我是新增的那个";
    console.log(arr[10]);   // 打印新增的元素
    console.log(arr);       // 打印新增后的数组
    console.log(arr[5]);   // 打印被动新增的元素
    【注】:
    (1)数组被创建后,数组内所有的元素不管存不存在,都已经被声明,只不过没有被赋值;
    (2)想要在数据中新增一个元素,直接把值赋值给你想要新增的那一位置的元素,也就是这个例子中的第十一元素(arr[10])
    (3)新增元素之前的元素,如果不存在,就会被赋予一个undefined(因为只被声明,没有赋值),也会增加数组的长度。
    删:
    var arr = ["AI-fisher",true];
    arr.length = 1;         //通过改变数组的长度把数组之后的元素删除
    console.log(arr);       //删除后的数组
    console.log(arr[1]);    //打印删除的元素
      结合之前新增元素的例子,我们可以得出一个结论:数组的length属性不是静态的,它不只是可读,因此,我们可以通过设置这个属性,从数据的末尾移除项或像数组中添加新项。作为数组的两个核心位置,不管数组怎么变化,它们都只代表数组第一位和最后一位。就像是拉力器的两个拉环一样,弹簧被拉伸多少,都逃离不了拉环给它们的范围。
    改:
    var arr = ["AI-fisher",true];
    arr[1] = "我代替了true";
    console.log(arr[1]);   // 打印替换后的元素
    console.log(arr);	//打印替换后的数组
    用索引的方式,直接赋值即可
     
    总结:
      通过数组本身自带的属性:索引和长度,我们能实现基本的数组操作(增删改查),但是我们也能看到其局限性,功能单一而且麻烦。改和查倒还好,虽然功能单一但是操作简便,但是增和删就表现得有点尴尬了,所以后续会补充数组的各种方法,让数组的操作更加人性化,具体请参考本人另一篇博客:https://www.cnblogs.com/AI-fisher/p/11101855.html
     
  • 相关阅读:
    虚拟化碎片知识
    CentOS升级内核及KVM安装(已试验,可行)
    Libvirt 虚拟化库剖析
    [ACM]Max Sum
    [ACM]n a^o7 !
    [java]ActionEvent事件:获取输入字符串的长度
    [ACM]The Best Seat in ACM Contest
    [java]ItemEvent事件:简单计算器
    通过注册表的句柄得到当前句柄在注册表中的路径
    [测试模式]Setup方法的滥用
  • 原文地址:https://www.cnblogs.com/AI-fisher/p/11095273.html
Copyright © 2020-2023  润新知