1. Es5中的一些数组方法。
1. for循环。
2. forEach:无返回值,break和container会报错。
3. map:返回一个New Array,根据function对于每一项格式化。
4. filter:返回符合条件的数组。
5. some:数组中有一个为true返回true。
6. every:数组中所有满足条件,返回true。
7. reduce:累加执行,具体参数可以参照MDN。
8. for in (不建议使用)。
2. ES6对于数组方法的扩展。
1. for of:迭代Array,因为Array内置了[Symbol.iterator]()所以可迭代。(字符串也支持,自定义对象实现迭代方法也可以forof)。
> for of中也存在break和continue以及return,return和break都是直接终止循环。
2. Array.from(A,B,C):将类数组对象转成数组。(伪数组具备两个特征,1. 按索引方式储存数据 2. 具有length属性。参考Demo可以有一些更高级的用法)
1. A:伪数组对象。
2. B:function,对要转化的每一项进行格式化的处理函数,return为处理后的每一项。
3. C:B中的this指向。
3. Array.of:解决ES5 new Array不统一的问题。
4. Array.prototype.fill:填充传入的数组,包括开始索引,不包括结束。
5. Array.prototype.find:找到符合条件的元素。
6. Array.prototype.findIndex:找到符合条件的数组元素索引。
7. Array.prototype.copyWithin(A,B,C):在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。
1. A:原有数组开启替换的位置。(Y)
2. B:原有数组需要进行替换取值的开始点。(N)不填从第0个开始,负数从倒数开始。
3. C:原有数组需要进行替换取值的结束点。(N)不填一直到结束,负数同理。
8. Array.prototype.values()/keys()/entries():返回的都是Iterator,可以用for of进行处理。
复制代码
for (let val of [1, 2, 3]) {
console.log(val);
}
// 1,2,3
// values() kes() entries()返回的都是iterator对象
for (let item of arr) {
console.log(item)
}
for (let item of arr.values()) {
console.log(item)
}
for (let item of arr.keys()) {
console.log(item)
}
for (let [index, item] of arr.entries()) {
console.log(index, item)
}
// Array.from()
// [1,1,1,1,1] ES 5用法
let arr = Array(6).join(' ').split('').map(item => 1)
// ES 6
Array.from({
length: 5
}, function () {
return 1
})
// Array.of()
Array.of(7); // [7]
Array.of(1, 2, 3); // [1, 2, 3]
// Array.of 就是为了解决 ES5中Array的问题
Array(7); // [ , , , , , , ]
Array(1, 2, 3); // [1, 2, 3]
// Array.prototype.fill()
let array = [1, 2, 3, 4]
array.fill(0, 1, 2) // 用0填充 开始位置1 不包括结束2
// 数组第一个索引位置使用0进行填充
// [1,0,3,4]
// 更加优雅的处理初始化数组
Array(5).fill(1)
// [1,1,1,1,1]
// Array.prototype.find()
let array = [5, 12, 8, 130, 44];
let found = array.find(function (element) {
return element > 10;
});
console.log(found); // 12
// Array.prototype.findIndex()
let array = [5, 12, 8, 130, 44];
let found = array.findIndex(function (element) {
return element > 10;
});
console.log(found); // 1
// Array.prototype.copyWithin()
let arr = [1, 2, 3, 4, 5]
// 原本arr索引为1的位置开始填充,从第三个位置开始截取
console.log(arr.copyWithin(1, 3)) // [1, 4, 5, 4, 5]
复制代码