数组的作⽤是可以批量保存多条数据,但是当我们需要对数据进⾏操作时,并不能通过直接操作数组来实现效果,还是需要将每⼀条数据从数组中取出来,然后再依次取对其进⾏操作。
数组的遍历就是指依次访问数组中每⼀项数据。
for 循环
for 循环是遍历数组最简单的⼀种,也是使⽤频率最⾼的⼀种。
for(let i = 0, len = ary.length; i < len; i++){
console.log(ary[i]);
}
for-of
ES6 中新增了⼀种遍历数组的⽅法 for-of,相⽐起 for 循环来说它的代码更加简洁。
let ary = [100, 200, 300, 400];
// 创建⼀个变量 value ⽤来接收数组中的每⼀个值
for(let value of ary){
console.log(value);
}
说明:效率上来说 for-of 还是⽐不上普通的 for 循环。但是 for-of 除了可以遍历数组外,还可以遍
历⼤多数类数组对象。
for in
let arr = [1, 2, 3];
arr.name = 'LJ';
arr.foo = function() {};
for(let key in arr) {
console.log(`key: ${key}; item: ${arr[key]}`);
}
every 方法
遍历数组中的每一个元素,然后与回调函数中设定的条件进行比对,如果数组中的全部元素都符合该条件则返回 true,只要有一个元素不符合该条件就返回 false。
返回值 : 布尔值;是否改变原数组 : 否。
let arr = [1, 2, 3, 4, 5, 6];
let new_arr = arr.every((item, index) => item >= 1);
console.log(arr);// [ 1, 2, 3, 4, 5, 6 ]
console.log(new_arr);// true
some 方法
遍历数组中的每一个元素,然后与回调函数中设定的条件进行比对,如果数组中有一个元素符合该条件就返回 true,除非所有元素都不符合该条件就返回 false。
返回值 : 布尔值;是否改变原数组 : 否。
let arr = [1, 2, 3, 4, 5, 6];
let new_arr = arr.some((item, index) => item > 2);
console.log(arr);// [ 1, 2, 3, 4, 5, 6 ]
console.log(new_arr);// true
filter 方法
过滤数组中不符合回调函数中设定条件的元素。
返回值 : 返回过滤后的数组;是否改变原数组 : 否。
let arr = [1, 2, 3, 4, 5, 6];
let new_arr = arr.filter((item, index) => item > 2);
console.log(arr);// [ 1, 2, 3, 4, 5, 6 ]
console.log(new_arr);// [ 3, 4, 5, 6 ]
map 方法
将数组中的元素进行映射。
返回值 : 返回映射后的结果;是否改变原数组 : 否。
let arr = [1, 2, 3, 4, 5, 6];
let new_arr = arr.map((item, index) => `num: ${item}`);
console.log(arr);// [ 1, 2, 3, 4, 5, 6 ]
console.log(new_arr);// [ 'num: 1', 'num: 2', 'num: 3', 'num: 4', 'num: 5', 'num: 6' ]
forEach 方法
遍历数组
返回值 : 无;是否改变原数组 : 否。
let arr = [1, 2, 3, 4, 5, 6];
arr.forEach((item, index) => {
console.log(`index: ${index}; item: ${item}`);
});
reduce 方法(迭代)
归并数组中的元素
返回值 : 返回归并后的结果;是否改变原数组 : 否。
let arr = [1, 2, 3];
let res = arr.reduce((prev, next) => prev + next);
console.log(arr);// [ 1, 2, 3 ]
console.log(`sum: ${res}`);// sum: 6