• js 高程 Array


    Array

    跟其他语言中的数组一样,ECMAScript 数组也是一组有序的数据,但跟其他语言 不同的是,数组中每个槽位可以存储任意类型的数据。

    这意味着可以创建一个数组,它的第一个元素 是字符串,第二个元素是数值,第三个是对象。ECMAScript 数组也是动态大小的,会随着数据添加而 自动增长。

    创建数组

    使用构造函数创建数组:

    //1. 基本用法
    let arr1 = new Array();//[]
    //2. 设定数组长度
    let arr2 = new Array(5);//[空 × 5]
    //3. 设定数组内元素
    let arr3 = new Array(1, 3, 5);//[1, 3, 5]
    

    使用数组字面量方式创建:

    let arr1 = [];
    let arr2 = [1, 2];
    

    ES6 from() 方式创建:from()用于将 类数组结构转换为数组实例

    //1. 字符串会被拆成单个字符
    Array.from("matt");//["m", "a", "t", "t"]
    //2. 使用from()将集合和映射转换为一个新数组
    const map = new Map().set(1, 2)
    					 .set(3, 4);
    const set = new Set().add(1)
    					 .add(2)
    					 .add(3)
    					 .add(4);
    Array.from(map);//[Array(2), Array(2)]
    Array.from(set);//[1, 2, 3, 4]
    //3. 对现有数组进行浅复制
    let arr1 = [1, 2, 3, 4];
    let arr2 = Array.from(arr1);
    arr1 === arr2;//false
    //4. 将任何可迭代对象转换为数组
    const iter = {
        *[Symbol.iterator](){
            yield 1;
            yield 2;
            yield 3;
            yield 4;
        }
    };
    Array.from(iter);//[1, 2, 3, 4]
    //5. 转换arguments对象
    //6. 将某些带有必要属性的对象转换为数组,keys需要能够转换为数字,且具有length这一项
    const obj = {
        0:1,
        1:2,
        2:3,
        length:3//必要属性
    }
    Array.from(obj);//[1, 2, 3]
    
    let obj1 = {
        1:2,
        2:3,
        3:4,
        length:3
    }
    Array.from(obj1);//[undefined, 2, 3] 说明它会从0开始
    
    let obj2 = {
        "a":2,
        "b":3,
        "c":4,
        length:3
    }
    Array.from(obj2);//[undefined, undefined, undefined]
    //7. Array.from()还接收第二个可选的映射函数参数。这个函数可以直接增强新数组的值,而无须像调用 Array.from().map()那样先创建一个中间数组。
    const a2 = Array.from([1, 2, 3, 4], x => x*2);//[2, 4, 6, 8]
    

    ES6 of() 方式创建:of()用于将一组参数转换为数组实例

    //用于替代 Array.prototype.slice.call(arguments),将 arguments 转换为数组
    Array.of(1, 2, 3, 4)//[1, 2, 3, 4]
    

    检测数组

    经典的 ECMAScript 问题:判断一个对象是不是数组

    1. 只有一个网页时,使用instanceof就行。
    let arr = [1, 2, 3];
    arr instanceof Array;//true
    
    1. 若网页中有多个框架,可能会有不同的全局执行上下文,因此会有不同版本的Array构造函数,影响instanceof的判断

      ECMAScript 提供了 Array.isArray()方法。这个方法的目的就是确定一个值是 否为数组,而不用管它是在哪个全局执行上下文中创建的。

    迭代器方法

    ES6中,Array 的原型上暴露了 3 个用于检索数组内容的方法:keys()values()entries()可用用于拆分键值对

    let arr = ["H", "e", "l", "l", "o"];
    const arrKeys = Array.from(arr.keys());//[0, 1, 2, 3, 4]
    const arrValues = Array.from(arr.values());//["H", "e", "l", "l", "o"]
    const arrEntries = Array.from(arr.entries());//结果见下图
    
    image-20210210051306212

    使用解构拆分键值对:……这个谷歌浏览器好像没实现?

    let arr = ["H", "e", "l", "l", "o"];
    for(const [idx, element] of arr){
        console.log(idx, ":", element);
    }
    

    二维数组

    //初始化二维数组
        var len = s.length;
        var arr = new Array(len);
        for(var i = 0;i<len;i++){
            arr[i] = [];
            for(var r = 0;r<len;r++){
                arr[i][r] = 0
            }
        }
    
  • 相关阅读:
    2019-1-7 水晶报表
    2018-12-25工作记录 空白行===水晶报表
    2018-7-26-随笔-泛型
    2018-7-20-随笔-转换
    2018-7-18-随笔-接口
    2018-7-17-随笔-params和ref、out用法、事件访问器
    VPS安装metasploit-framework
    Mimiktaz抓取本机密码
    msfvenom生成各类Payload命令
    docker容器开启ssh远程登录
  • 原文地址:https://www.cnblogs.com/peekapoooo/p/14394888.html
Copyright © 2020-2023  润新知