• js数组冷知识


    省略数组值

    在声明数组时,省略一些数组值

    let a = [1,,3]  //a.length为3
    a = [,,]    //a.length为2
    0 in a  //false,a在索引0处没有元素
    

    稀疏数组

    稀疏数组时指包含从0开始的不连续索引的数组。如果数组是稀疏的,则length属性值大于元素的个数

    a = new Array(5);   //数组没有元素但length为5
    a = [];     //创建一个空数组,length=0
    a[1000] = 0;    //赋值添加一个元素,length为1001
    

    数组长度有两个特性,一是它总是大于每个元素的索引值,二是当数组长度小于等于某些元素索引值时会删除这些元素。

    let arr = [1,2,3,4,5];  // 从5个元素的数组开始
    arr.length = 3; //现在的arr为[1,2,3]
    arr.length = 0;   //删除所有的元素,arr为[]
    arr.length = 5;   //长度为5,但是没有元素,就像new Array(5)
    

    filter,every,some,reduce,reduceRight

    filter类似于forEach和map,都是对数组进行循环,但filter()会跳过稀疏数组中缺少的元素,所以它的返回数组总是稠密的。

    let arr = [1,,2,3];
    some = arr.filter(function(x){return x < 2});   //[1]
    

    every()方法就像数学中的∀

    let arr = [1,2,3,4]
    arr.every(function(x){return x > 0;})  //true
    arr.every(function(x){return x % 2 === 0;})   //false
    

    some()方法就像数学中的∃

    let arr = [1,2,3,4]
    a.some(function(x){return x > 10;})  //false
    a.some(function(x){return x % 2 === 0;})   //true
    

    reduce和reduceRight十分类似都是使用指定的函数将数组元素进行重新组合,不过reduceRight是按索引从高到底进行。

    //数组求和
    let sum = arr.reduce(function (x, y) {
        return x + y;
    },0);
    //数组求最大值
    let max = arr.reduce(function (x, y) {
        return Math.max(x,y);
    });
    //数组去重
    var newArr = arr.reduce(function (x, y) {
        x.indexOf(y) === -1 && x.push(y);
        return x;
    },[]);
    
  • 相关阅读:
    taro 填坑之路(一)taro 项目回顾
    Redux遵循的三个原则是什么?
    解释一下 Flux
    MVC框架的主要问题是什么?
    与 ES5 相比,React 的 ES6 语法有何不同?
    你了解 Virtual DOM 吗?解释一下它的工作原理
    DOM 事件有哪些阶段?谈谈对事件代理的理解
    CSS:用Less实现栅格系统
    .NET:国际化和本地化
    自定义工作流 之 模型设计与实现
  • 原文地址:https://www.cnblogs.com/Lazy-Cat/p/12298610.html
Copyright © 2020-2023  润新知