ES6数组

162 阅读4分钟

创建数组

ES6之前创建数组的最常用的两种是数组字面量Array()构造函数。 ES6新增了几个创建数组的方法

  1. 扩展运算符
let a = [1,2,3]
let b = [0,...a,4]
  1. Array.of()——新增的工厂方法

在使用Array()构造函数时,传递单个数值参数,这个参数会成为该数组的长度值,传递两个数值时,则会作为该数组的元素。也就是Array()无法创建单个数值元素的数组。 Array.of()完美解决了这个问题:

Array.of() //返回一个没有参数的空数组
Array.of(10)  //返回只有一个数值元素的数组
Array.of(1,2,3)  //[1,2,3]
  1. Array.from()——新增的工厂方法

该方法期待一个可迭代对象或类数组对象作为第一个参数,并返回包含该对象元素的新数组。是创建数组副本的一种简单方法。如果传入的是可迭代对象,与使用[...interable]一样。

读写数组元素

读写数组的方法与之前的方法并没有太多的更新,还是使用[]和length属性来读写

稀疏数组

判断是否是稀疏数值,关键在于数组length的属性值是否大于元素个数。

数组长度

length属性就是数组中的元素的个数。它的值比数组的最高索引大1。 length还可用于删除,新增数组。

添加和删除数字元素

添加数组元素

  1. 新索引赋值——最简单
a[3] = "three"
  1. push() and unshift() 分别用于在数组末尾和开头插入元素

删除数组元素 delete

删除数组元素类似给该元素赋值undefined,不会改变length的属性值,数组会变稀疏。

迭代数组

  1. for/of——最常用 但遍历稀疏数组时,不存在的元素均返回undefined。

  2. entries() 搭配解构赋值可以同时获得数组的索引和值

let letters = [...'hello world']
let everyother = ''
for(let [i,v] of letters.entries()){
    if(i % 2 === 0) everyother += v; //偶素序列字母
}
  1. forEach() 能感知稀疏数组
  • 还有map()和filter()方法,后面将介绍

多维数组

js并不支持多维数组,但不支持也可以使用。具体方法就是使用数组的数组,两个[]即可。

数组方法

迭代方法

  1. forEach()——无返回
  2. map()——有返回,返回的数组与原始数组一样稀疏
  3. filter()——有返回,期待接受断言函数,返回元素为true的新数组,跳过缺失,稠密的
  4. find()——有返回,寻找断言函数的真值,匹配第一个就结束迭代,返回匹配的元素,找不到返回undefined
  5. findIndexx()——有返回,与find()区别在于返回的是匹配元素的索引,找不到返回-1
  6. every()——返回布尔值,数组断言方法,类型全称量词,全部为true才返回true
  7. some()——返回布尔值,也是数组断言,类似存在量词,一个返回true就返回true
  8. reduce()和reduceRight()都用于归并数组元素,最终产生一个值,区别在于归并的顺序不一样

打平方法

  1. flat()
  2. flatMap()

添加数组

concat()创建并返回一个新数组,操作代价有点大,还不如直接使用push()或splice()就地修改数组。

栈队列方法

就是push() pop() unshift() shift(),具体不做介绍,前一篇笔记写过了

提取、替换、填充、复制切片

  1. slice()返回一个数组的切片,不会修改原数组,接收两个参数,一是开始的位置,二是要切的个数
  2. splice()插入删除的通用方法,会修改原数组
  3. fill()用于将数组的元素设置为指定的值
  4. copyWithin()把数组切面复制到数组中的新位置,这有点复杂,目前还没用到,不深究

数组索引与排序

  • 数组索引
  1. indexOf()从头开始找,第一个参数为要寻找的元素,第二个参数为开始寻找的位置

  2. lastIndexOf()倒着找,和第一个方法类似 以上两个方法都使用===匹配查找。

  3. includes()用于查找该元素是否存在

  • 排序
  1. sort()
  2. reverse()反转,直接反转原数组

数组到字符串转换

  1. join()
  2. toString()
  3. toLocaleString()

静态数组函数

Array.isArray()用于确定一个未知值是不是数组