zoukankan      html  css  js  c++  java
  • js 对Array的补充

    Array.form的用法

    1.可以将各种值转为真正的数组,并且还提供map功能。这实际上意味着,只要有一个原始的数据结构,你就可以先对它的值进行处理,然后转成规范的数组结构,进而就可以使用数量众多的数组方法。

    2.另一个应用是,将字符串转为数组,然后返回字符串的长度。因为它能正确处理各种Unicode字符,可以避免JavaScript将大于uFFFF的Unicode字符,算作两个字符的bug。

    <!DOCTYPE html>
    <html>
    <head>
    
    
    </head>
    <body>
    <p id="h01"></p>
    
    
    <script>
    'use strict';
    
    //便利NodeList数组
    let ps = document.querySelectorAll('p');
    console.log(ps);
    Array.from(ps).forEach( function(p) {
        console.log(p);
    });
    
    //装换成数组
    console.log(Array.from("hello"));
    
    //本来的数组,返回原来的
    let array0 = ["d","f","g"];
    console.log(Array.from(array0));
    
    //按照一定的规则改变数组内的值
    console.log(Array.from([1,3,5]).map(x => x * x * x));
    
    console.log(Array.from([1,,4,6,,0],(n => n || 0)));
    
    //自定义改变数组内的值
    function typesOf () {
         return Array.from(arguments,value => typeof(value)) ;
    }
    
    console.log(typesOf(null,[],NaN));
    </script>
    </body>
    </html> 

    Array.of()

    Array.of方法用于将一组值,转换为数组

    这个方法的主要目的,是弥补数组构造函数Array()的不足。因为参数个数的不同,会导致Array()的行为有差异。

    Array.of基本上可以用来替代Array()new Array(),并且不存在由于参数不同而导致的重载。它的行为非常统一。

    Array.of总是返回参数值组成的数组。如果没有参数,就返回一个空数组。

    Array() // []
    Array(3) // [, , ,]
    Array(3, 11, 8) // [3, 11, 8]
    Array.of() // []
    Array.of(undefined) // [undefined]
    Array.of(1) // [1]
    Array.of(1, 2) // [1, 2]

    Array.of方法可以用下面的代码模拟实现。

    function ArrayOf(){
      return [].slice.call(arguments);
    }

    数组推导

    提供简洁写法,允许直接通过现有数组生成新数组。这项功能本来是要放入ES6的,但是TC39委员会想继续完善这项功能,让其支持所有数据结构(内部调用iterator对象),不像现在只支持数组,所以就把它推迟到了ES7。Babel转码器已经支持这个功能

    var a1 = [1, 2, 3, 4];
    var a2 = [for (i of a1) i * 2];
    
    a2 // [2, 4, 6, 8]

    上面代码表示,通过for...of结构,数组a2直接在a1的基础上生成。

    注意,数组推导中,for...of结构总是写在最前面,返回的表达式写在最后面。

    for...of后面还可以附加if语句,用来设定循环的限制条件。

    var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ];
    
    [for (year of years) if (year > 2000) year];
    // [ 2006, 2010, 2014 ]
    
    [for (year of years) if (year > 2000) if(year < 2010) year];
    // [ 2006]
    
    [for (year of years) if (year > 2000 && year < 2010) year];
    // [ 2006]

    上面代码表明,if语句要写在for...of与返回的表达式之间,而且可以多个if语句连用。

    map 和filter的区别:

    map是对原数组的加工,filter是对原数组的过滤

  • 相关阅读:
    jenkins配置html报告
    JMeter并发测试(设置集合点)
    jmeter压力测试 设置一秒发送一次请求,一秒两次请求
    jmeter压力测试的简单实例+badboy脚本录制
    JMeter问题集
    英语自然拼读法基本规则和小窍门
    Jmeter工具做性能测试 常见的错误汇总
    如何使用JDK自带工具JConsole
    第七章 JMeter 逻辑控制器
    第六篇:JMeter 断言
  • 原文地址:https://www.cnblogs.com/machao/p/5275780.html
Copyright © 2011-2022 走看看