zoukankan      html  css  js  c++  java
  • 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;
    },[]);
    
  • 相关阅读:
    新内核2.6.30编译完之后在目标板上看不到ttyS1
    使用memset、memcpy等函数需要包含string.h而不是strings.h
    软件模式之原则设计
    由编译错误看L. lxxxx的正确位置
    设计模式之策略模式
    make menuconfig提示'make menuconfig' requires the ncurses libraries.
    抽取界面用 XML 和 XSL 构建有良好适应性的 Web 应用前端
    .Net框架下的XSLT转换技术简介
    派生和继承
    UML 类图介绍
  • 原文地址:https://www.cnblogs.com/Lazy-Cat/p/12298610.html
Copyright © 2011-2022 走看看