数组是最简单的内存数据结构
删除数组元素的方法:pop(删除数组里最后元素),shift(删除第一个元素)
添加数组元素的方法:push(把元素添加到数组末尾),unshift(把数值插入到数组的开头)
在任意位置添加或删除元素:splice(index,num,value),num为0时即为插入元素
通过push和pop方法,可以用数据来模拟栈
通过shift和unshift方法,可以用数组模拟基本的队列数据结构
二维数组和多维数组
矩阵:二维数组;数组的数组
数据结构中有几个维度都没有关系,我们可以用循环迭代每个维度来访问所有的格子(如3*3*3的矩阵)
数组合并:concat
迭代器函数:
- every方法迭代,迭代每个元素,直至返回false
- some方法迭代,迭代每个元素,直至返回true
- foreach方法迭代,迭代整个数组
- 用map和filter方法,返回新数组。filter方法返回的新数组由使函数返回true的元素组成。
- reduce方法。reduce(preVal,curVal,[index],[arrary])。返回一个将被叠加到累加器的值,reduce方法停滞执行后会返回这个累加器。eg:对一个数组中的所有元素求和。
let numbers=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
numbers.reduce((previous,current)=> previous + current);
map,filter,reduce是js函数式编程的基础
ES6和数组的新功能:
- for...of 循环迭代
- @@iterator对象,需要通过Symbol.iterator来访问,不断调用迭代器的next方法。
iterator.next().value
- 数组的 entries,keys,values方法
- entries 方法返回包含键值对的@@iterator,使用集合,字典,散列表等数据结构时,能取出键值对是很有用的。
- keys 方法返回包含数组索引的@@iterator
- values 方法返回的@@iterator 则包含数组的值。
- Arrary.from 方法根据已有的数组创建一个新数组
- Arrary.of 方法根据传入的参数创建一个新数组
- fill 方法用静态值填充数组
let arr =Arrary(6).fill(1);
// [1,1,1,1,1,1]
- 使用copyWithin 方法,复制数组中一系列元素到同一数组指定的起始位置。
排序元素:
- reverse 方法,倒序输出数组
- sort 方法在对数组做排序时,把元素默认成字符串进行相互比较
搜索:
- indexOf 方法返回与参数匹配的第一个元素的索引,返回-1则为不在数组里
- lastIndexOf 返回与参数匹配的最后一个元素的索引,返回-1则为不在数组里
- find 和 findIndex 方法接受一个回调函数,搜索一个满足回调函数条件的值。find 返回第一个满足条件的值,findIndex 返回这个值在数组里的索引,没有满足条件的值,find会返回 undefined,findIndex 返回 -1。
- 如果数组里存在某个元素,includes 方法会返回true,否则返回 false,如果传入一个起始索引,搜索从指定位置开始。
let n=[7,6,5,4,3,2,1];
console.log( n.includes(4,5));
//false 索引5之后元素不含 4