一:创建和初始化数组

var arr = new Array(); //创建空数组[]
var arr1 = new Array(7); //创建长度为7的数组
var aar2 = new Array('1','2','3');
var arr3 = [];复制代码

二:数组方法

常用方法:

  1. push() 添加元素到数组的末尾
  2. unshift() 把数值插入到数组的首位
  3. pop() 删除数组里靠后的元素
  4. shift() 数组首位删除元素
  5. splice() 在任意位置添加或删除元素

splice()方法接受的第一个参数,表示要删除或插入的元素的索引值;第二个参数表示要删除的元素的个数;第三个参数往后就是要添加到数组里的值。

其他核心方法:

  1. concat()  连接2个或更多数组,并返回结果
  2. every() 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,就返回true
  3. filter() 对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
  4. forEach() 对数组中的每一项运行给定的函数,这个方法没有返回值
  5. join() 将所有数组练成一个字符串
  6. indexOf() 返回第一个与给定参数相等的数组的索引,没有找到则返回-1
  7. lastIndexOf() 返回在数组中搜索到的与给定参数相等的元素的索引里的最大值
  8. map() 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
  9. reverse() 颠倒数组中元素的顺序
  10. slice() 传入索引值,将数组里对应索引范围内的元素作为新数组返回
  11. some() 对数组中的每一项运行给定函数,如果任一项返回true,则返回true
  12. sort() 按照字母顺序对数组排序,支持传入指定排序方法的函数做参数
  13. toString() 将数组作为字符串返回
  14. valueOf() 和toString()类似,返回指定对象的原始值
  15. reduce()方法  返回一个将被叠加到累加器的值,对所有元素求和
number.reduce(function(previous, current, index){
    return previous + current;
});复制代码

三:ES6和数组的新功能

  • iterator  返回一个包含数组键值对的迭代器对象,可以通过同步调用得到数组元素的键值对
  • copyWithin 复制数组中一系列元素到同一数组指定的起始位置
  • entries 返回包含数组所有键值对的@@iterator
  • includes 如果数组中存在某个元素则返回true,否则返回false
  • find 根据回调函数给定的条件从数组中查找元素,如果找到返回该元素
  • findIndex 根据回调函数给定的条件从数组中查找元素,如果找到返回该元素在数组中的索引
  • fill 用静态值填充数组
  • from 根据已有数组创建一个新数组
  • keys 返回包含数组所有索引的@@iterator
  • of 根据传入的参数创建一个新数组
  • values 返回包含数组中所有值的@@iterator

1、ES6引入for...of循环来迭代数组

for(let n of numbers){
    console.log(n); //打印数组元素
}复制代码

2、使用ES6新的迭代器(@@iterator)

ES6为Array类增加类一个@@iterator属性,需要通过Symbol.iterator来访问

var num = [1,2,3]
let iterator = num[Symbol.iterator]();
console.log(iterator.next().value); //1
console.log(iterator.next().value); //2
console.log(iterator.next().value); //3
console.log(iterator.next().value); //undefined
复制代码

3、数组的entries、keys和values方法

entries方法包含键值对的@iterator

var num = [1,2,3]
let aentries = num.entries();
console.log(aentries.next().value); //[0,1]
console.log(aentries.next().value); //[1,2]
console.log(aentries.next().value); //[2,3]
console.log(aentries.next().value); //undefined

复制代码

4、key方法包含数组索引的@@iterator

var num = [1,2,3]
let keys = num.keys();
console.log(keys.next()); //{ value: 0, done: false }
console.log(keys.next()); //{ value: 1, done: false }
console.log(keys.next()); //{ value: 2, done: false }
console.log(keys.next()); //{ value: undefined, done: true }
复制代码

5、values方法同理返回包含的值

6、from方法根据已有的数组创建一个新数组

var num = [1,2,3]
let num1 = Array.from(num); //[1, 2, 3]
let num2 = Array.from(num, x => (x + 2)); //[3, 4, 5]
复制代码

7、Array.of方法根据传入的参数创建一个新数组

let num1 = Array.of(1); //[1]
let num2 = Array.of(1,23,45); //[1, 23, 45]
复制代码

8、fill方法

let num = [1,2,34,5,6,7];
let num1 = num.fill(0,2,4);
console.log(num); //[1, 2, 0, 0, 6, 7]
console.log(num1); //[1, 2, 0, 0, 6, 7]
复制代码

9、copyWithin方法

let num = [1,2,34,5,6,7];
let num1 = num.copyWithin(1,3,5);
console.log(num); //[1, 5, 6, 5, 6, 7]
console.log(num1); //[1, 5, 6, 5, 6, 7]复制代码

把位置3开始到5结束(不包括5)的元素复制到位置1