ES6和ES7新增的数组方法
- forEach和箭头函数
- for...of
- @@iterator
- copyWithin
- entries
- includes
- find
- findIndex
- fill
- from
- keys
- of
- values
1.使用forEach和箭头函数迭代
箭头函数可以简化forEach方法
var numbers = [1,2,3];
numbers.forEach(function (x) {
console.log(x); // 1 2 3
});
numbers.forEach(x => {
console.log(x); // 1 2 3
});
2.使用for...of循环迭代
ES6还引入了迭代数组值的for...of循环
var numbers = [1,2,3];
for (let n of numbers) {
console.log(n); // 1 2 3
}
3.使用ES6新的迭代器 ( @@iterator)
ES6还为Array类增加了一个@@iterator属性,需要通过Symbol.iterator来访问
let numbers = [1,2,3];
let iterator = numbers[Symbol.iterator]();
console.log(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
4.数组的entries、keys和values方法
ES6还增加了三种从数组中得到迭代器的方法 entries、keys和values方法
entries方法返回包含键值对的@@iterator
let numbers = [1,2,3];
let aEntries = numbers.entries(); //得到键值对的迭代器
console.log(aEntries);
console.log(aEntries.next().value); //[0, 1] - [位置0的值为1]
console.log(aEntries.next().value); //[1, 2] - [位置1的值为2]
console.log(aEntries.next().value); //[2, 3] - [位置2的值为3]
console.log(aEntries.next().value); //undefined
keys方法返回包含数组索引的@@iterator
let numbers = [1,2,3];
let aKeys = numbers.keys(); //返回数组的索引
console.log(aKeys);
console.log(aKeys.next().value); //0
console.log(aKeys.next().value); //1
console.log(aKeys.next().value); //2
console.log(aKeys.next().value); //undefined
values方法返回的@@iterator则包含数组的值
let numbers = [1,2,3];
let aValues = numbers.values(); //返回数组的索引
console.log(aValues);
console.log(aValues.next().value); //1
console.log(aValues.next().value); //2
console.log(aValues.next().value); //3
console.log(aValues.next().value); //undefined
5.使用from方法
Array.from方法根据已有的数组创建一个新数组