一:创建和初始化数组
var arr = new Array(); //创建空数组[]
var arr1 = new Array(7); //创建长度为7的数组
var aar2 = new Array('1','2','3');
var arr3 = [];复制代码
二:数组方法
常用方法:
- push() 添加元素到数组的末尾
- unshift() 把数值插入到数组的首位
- pop() 删除数组里靠后的元素
- shift() 数组首位删除元素
- splice() 在任意位置添加或删除元素
splice()方法接受的第一个参数,表示要删除或插入的元素的索引值;第二个参数表示要删除的元素的个数;第三个参数往后就是要添加到数组里的值。
其他核心方法:
- concat() 连接2个或更多数组,并返回结果
- every() 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,就返回true
- filter() 对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
- forEach() 对数组中的每一项运行给定的函数,这个方法没有返回值
- join() 将所有数组练成一个字符串
- indexOf() 返回第一个与给定参数相等的数组的索引,没有找到则返回-1
- lastIndexOf() 返回在数组中搜索到的与给定参数相等的元素的索引里的最大值
- map() 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
- reverse() 颠倒数组中元素的顺序
- slice() 传入索引值,将数组里对应索引范围内的元素作为新数组返回
- some() 对数组中的每一项运行给定函数,如果任一项返回true,则返回true
- sort() 按照字母顺序对数组排序,支持传入指定排序方法的函数做参数
- toString() 将数组作为字符串返回
- valueOf() 和toString()类似,返回指定对象的原始值
- 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