博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript权威指南笔记-数组
阅读量:5826 次
发布时间:2019-06-18

本文共 3253 字,大约阅读时间需要 10 分钟。

稀疏数组

稀疏数组是包含从0开始的不连续索引的数组。他的length属性大于数组的个数。例如:

var a = new Array(5)    // 数组没有元素,但是length是5    a[1000] = 6             // length属性是1001        var b = [1, 2, 3, 4]    delete b[2]            // b变成了稀疏数组,但是length不变复制代码

数组方法

  • join()

    将所有元素转换成字符串并连接在一起。

    var a = [1,2,3]  a.join()              // 1,2,3  a.join('-')           // 1-2-3复制代码
  • reverse()

    返回并将所有元素颠倒顺序。

    var a = [1,2,3]  a.reverse()           // [3,2,1] 复制代码
  • sort()

    返回并排序的数组元素。如果包含undefined元素,则会排在数组最后。

    var a = [2,4,1]  a.sort()            // [1,2,4]    /* 按照一定规则排序 */  a.sort(function(a,b){ return b-a })   // [4,2,1]     复制代码
  • concat()

    创建并返回一个新的数组。(不会扁平化数组的数组)

    var a = [1,2,3]  a.concat(4, 5)            // [1,2,3,4,5]  a.concat([4,5])           // [1,2,3,4,5]  a.concat([4,5],[6,7])     // [1,2,3,4,5,6,7]  a.concat([4,[5,6])        // [1,2,3,4,[5,6]]复制代码
  • slice()

    返回指定数组的一个片段或子数组。参数负数表示倒数。

    var a = [1,2,3,4,5] a.slice(0,2)            // [1,2] a.slice(-3,-1)          // [4,5]复制代码
  • splice()

    在数组中插入或删除元素。与slice()不同的是,splice()会修改调用的元素。该方法第一个参数指定插入或删除的位置。第二个参数指定了应该删除的个数。如果省略了第二个参数,则起始点到结尾的元素全部都会删除。

    var a = [1,2,3,4,5,6]  a.splice(1,3)                 // a是[1,5,6],返回的是[2,3,4]    var b = [1,2,3,4,5,6]  b.splice(1,2,4,6)             // b是[1,4,6,4,5,6],返回的是[2,3]    复制代码
  • push()/pop() unshift()/shift()

在ECMAScript 5中的数组方法

ES5中数组方法都不会修改调用的原始数组。

  • forEach()

    遍历数组。

    var array = [1,2,3,4,5]  array.forEach(function(item,index,a){      console.log(item)        // 数组的元素      console.log(index)       // 数组的索引      console.log(a)           // 数组本身  })    复制代码

    但是,该方法不能用break语句终止遍历,必须把forEach()方法放在一个try块中,并且抛一个异常。

    function foreach(a,f,t){      try { a.forEach(f,t) }      catch(e) {          if (e=== foreach.break) return;          else throw e;      }  }  foreach.break = new Error('StopIteration')复制代码
  • map()

    将调用的数组的每个元素传递给指定的元素,并且返回一个数组。如果调用的数组是稀疏数组,则返回的也是稀疏数组。它具有相同的长度,相同的缺失元素。

    var a = [1,2,3]  var b = a.map(function(item){      return item*item  })                  // b是[1,4,9]复制代码
  • filter()

    该方法返回的数组是调用数组的一个子集。根据调用函数的返回值是true和false来判断的。该方法会跳过稀疏数组中缺少的元素,他返回的数组总是稠密的。

    var a = [1,2,3,4,5]  var b = a.filter(function(x){      return x<3  })                  // b是[1,2]       复制代码
  • some() 和 every()

    这两个方法是数组的逻辑判断。根据传入的函数逻辑判断,返回true和false。

    every()方法是当数组中所有元素调用判断函数都返回true时,返回true
    every()方法是当数组中至少有一个元素调用判断函数都返回true时,返回true

    var a = [1,2,3,4,5]  a.erery(function(item){      return a < 10  })        // 返回true  a.some(function(item){      return a < 2   })        //  返回true复制代码

    该方法具有短路功能。every()当返回值有false时停止遍历。some()当返回值有true()时停止遍历。

  • reduce() 和 reduceRight()

    使用指定的函数将数组元素进行组合,生成单个值。这在函数式编程中常见。也可以被称为“注入”和“折叠”。

    reduce()需要两个参数,第一个是执行化简参数的函数。第二个是传给函数的初始值,省略的话,即是数组的第一个元素。空数组不传第二个参数会报错。

    var a = [1,2,3,4]  var sum = a.reduce(function(x,y){
    return x+y},0) // 数组求和 var product = a.reduce(function(x,y){
    return x*y},1) // 数组求积 var max = a.reduce(function(x,y){
    return (x>y)?x:y}) // 求最大值复制代码

    reduceRight()与reduce()类似,但是他是按照索引从大到小进行处理数组的。

  • indexOf()和lastIndexOf()

    搜索整个数组中给定值得元素,返回第一个找到元素的索引,没有找到就返回-1。indexOf()是从头至尾搜索,lastIndexOf()是反向搜索。

数组类型

在es5中有Array.isArray()方法。

兼容性写法:

var  isArray = Function.isArray || function(o){        return typeof o === 'object' && Object.prototype.toString.call(o) === ["object Array"]    }复制代码

类数组对象

拥有数组方法的对象。

转载于:https://juejin.im/post/5aac7f3a51882555712c2057

你可能感兴趣的文章
开源 免费 java CMS - FreeCMS1.2-标签 infoSign
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
FreeMarker-Built-ins for strings
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
spring-boot支持websocket
查看>>
我理想中的前端工作流
查看>>
记一次Git异常操作:将多个repository合并到同一repository的同一分支
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
Android状态栏实现沉浸式模式
查看>>
使用Openfiler搭建ISCSI网络存储
查看>>
学生名单
查看>>
(转) 多模态机器翻译
查看>>
【官方文档】Nginx负载均衡学习笔记(三) TCP和UDP负载平衡官方参考文档
查看>>
矩阵常用归一化
查看>>
Oracle常用函数总结
查看>>