zoukankan      html  css  js  c++  java
  • JavaScript 数组

    JavaScript 数组:

      1、它是值的有序集合

      2、是无类型的,接受任意类型,且同个数组可以拥有多种类型

      3、索引是基于 0 的 32 位数值,最大可能索引为 2^32-2

      4、是动态的,在改变数组大小时不需重新分配空间

      5、可以是稀疏的,即索引不一定要连续,元素与元素之间允许有空缺

      6、有一个 length 属性,返回数组长度

      7、是 JavaScript 对象的特殊形式

      8、继承自 Array.prototype 中的属性,定义了一套丰富的数组操作

    创建数组:

    // 可以通过数组直接量或构造函数 Array 来创建数组
    let arr = [1, , 3];
    console.log(arr.length);    // 输出3
    arr = [, ,];
    console.log(arr.length);    // 数组直接量语法允许有可选结尾逗号,所以输出2
    
    /*
        arr = new Array();  //创建空数组,等价[]
        arr = new Array(5); // 创建长度为5的数组,此时值与索引都未定义
        // 当参数个数大于 1 时,参数指定数组的内容
        arr = new Array(3, 4, {'x': 'y'}, [5, 6], "Hello");
    */

    数组的读写:

      1、使用 [ ] 操作符来访问数组中的一个元素,方括号里是一个返回非负整数值的任意表达式

      2、所有索引都是属性名,而只有 0~2^32-2 之间的整数属性名才是索引

      3、可以使用负数或非整数来索引数组,但数值会转换为字符串,作为属性名来使用

      4、若使用非负整数字符串,则将它转换为整数,并作为数组索引

      5、数组索引仅仅是对象属性名的一种特殊类型,即 JavaScript 数组没有 “越界” 错误的概念,当属性不存在时仅仅得到 undefined 值

    let arr = [1, 2, 3, 4, 5];
    
    console.log(arr[0]);    // 返回 arr[0]
    console.log(arr[arr[0]+1]); // 返回 arr[2]
    console.log(arr["2"]);  // 返回 arr[2]
    
    arr["-1.2"] = 7;
    console.log("arr['1.2']: ", arr[-1.2]); // 返回 7
    console.log(arr[1.23]); //返回 undefined

    稀疏数组:

      1、稀疏数组就是包含从 0 开始的不连续索引的数组

      2、稀疏数组的 length 属性值大于元素个数

      3、可以通过数组直接量、构造函数 Array() 和 delete 操作符来创建稀疏数组

    let a1 = [];
    a1[100] = 0;    // 创建一个长度为 101 的稀疏数组
    
    let a2 = new Array(3);
    a2[2] = 3;  // 创建一个长度为 3 的稀疏数组,等价 a2 = [, , 3]
    
    let a3 = [1, 2, 3, 4];
    delete a3[1];   // 使数组变成长度为 4 的稀疏数组

     注:减小数组 length 属性时会截去大于 length 部分的元素,我们可以设置 Object.defineProperty(arr, "length", {writable: false}) 使数组 length 属性变成只读,即无法修改数组大小

    多维数组:

      1、JavaScript 不支持真正的多维数组,但可以用数组的数组来近似地表示

      2、可多次使用 [ ] 操作符来访问多维数组的元素

    let arr = [[[1, 2] ,[3, 4]], [5, 6]];
    console.log(arr[0][0][0] + arr[0][1][1] + arr[1][1]); // 返回 1+4+6
  • 相关阅读:
    jmeter测试接口--form表单提交请求(解决请求传参为空的问题)
    jmeter测试接口-打开很多TCP的连接数TIME_WAIT状态(Linux环境)导致报错的解决方法
    Jmeter 事务下的if控制器和无事务下的if控制器是否有不同 (业务实现3:2的补充)
    Jmeter if控制器的使用
    Jmeter 文件格式的参数化
    CentOS7学习笔记--tomcat9环境安装
    CentOS7学习笔记--PHP环境安装
    CentOS学习笔记—启动、ROOT密码
    虚拟机硬盘扩容
    win7如何设置某个软件不弹出用户账户控制
  • 原文地址:https://www.cnblogs.com/lemonyam/p/10655512.html
Copyright © 2011-2022 走看看