# 数组遍历总结
# for()
基本方法,有遍历条件,当数组较大时优化效果才会比较明显。
for (let i = 0; i < arr.length; i++) {
console.log(i)
}
# forEach()
遍历,对数组中的每一项运行给定函数。可修改原数组,没有返回值。
参数:当前值,索引值,原数组
let arr = [1, 2, 3, 4, 5];
arr.forEach((item, index, array) => {
console.log(item + '|' + index + '|' + (array === arr));
});
// 1|0|true
// 2|1|true
// 3|2|true
// 4|3|true
// 5|4|true
# for of()
可以正确响应break
、continue
和return
语句
let arr = [2, 6, 22, 45, 134]
for (let i of arr) {
if(i > 30) break;
console.log(i);
}
// 2, 6, 22
# filter()
过滤,不会改变原始数组,返回新数组
参数:当前值,索引值,原数组
let arr = [
{ id: 1, text: 'aa', done: true },
{ id: 2, text: 'bb', done: false }
]
let newArr = arr.filter(item => item.done);
console.log(newArr) // [{ id: 1, text: 'aa', done: true }]
let arr = [73, 84, 56, 22, 100]
let newArr = arr.filter(item => item > 80)
console.log(arr, newArr) // [73, 84, 56, 22, 100], [84, 100]
# map()
指“映射”,对数组中的每一项运行给定函数,返回新数组。
参数:当前值,索引值,原数组
let arr = [1, 2, 3, 4, 5];
let arr2 = arr.map( function( item, index, array ){
return item * item;
});
console.log(arr); // [1, 2, 3, 4, 5]
console.log(arr2); // [1, 4, 9, 16, 25]
# some()
对数组中的每一项运行给定函数,如果该函数对任一项
返回true,则返回true
参数:当前值,索引值,原数组
let arr = [ 1, 2, 3, 4, 5, 6 ];
let newArr = arr.some( function( item, index, array ){
return item > 3;
})
console.log( newArr ) // true
# every()
对数组中的每一项运行给定函数,如果该函数对每一项
返回true,则返回true
参数:当前值,索引值,原数组
与some
相反
let arr = [ 1, 2, 3, 4, 5, 6 ];
let newArr1 = arr.every(( item, index, array ) => item > 3 );
let newArr2 = arr.every(( item, index, array ) => item > 0 );
console.log( newArr1, newArr2 ); // false, true
# find()
找出第一个符合条件的数组成员,如果没有符合条件的成员,则返回undefined。
参数:当前值,索引值,原数组
let arr = [ 1, 2, 3, 4, 5, 6 ];
arr.find(i => {
i > 2
})
// 3
# findIndex()
与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
let arr = [ 1, 2, 3, 4, 5, 6 ];
arr.findIndex(i => {
i > 2
})
// 2