遍历数组 处理数组的方法
方法名称 | 方法介绍 |
---|---|
forEach() | 为数组中的每个元素执行一次回调函数。 |
every() | 如果数组中的每个元素都满足测试函数,则返回 true,否则返回 false。 |
some() | 如果数组中至少有一个元素满足测试函数,则返回 true,否则返回 false。 |
filter() | 将所有在过滤函数中返回 true 的数组元素放进一个新数组中并返回。 |
map() | 返回一个由回调函数的返回值组成的新数组。 |
reduce() | 从左到右为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值。 |
reduceRight() | 从右到左为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值。 |
-- | -- |
循环效率性能排行:
for > for-of(ES6新增) > forEach > filter >map > for-in
遍历数组就是以某种方法处理数组的每个元素。
1.使用 for循环: 没有返回值 处理数组
var arr = ["pingan","leo","robin"];
for(var i = 0; i<arr.length; i++){
// 处理元素的操作
console.log(`第${i}个元素是${arr[i}`)}
}
// 第0个元素是:pingan;
// 第1个元素是:leo;
// 第2个元素是:robin;
2.使用for- in
var arr =["pingan", "leo", "robin"];
for(var i in arr){
console.log(`第${i}个元素是${arr[i]}`)
}
// 第0个元素是:pingan;
// 第1个元素是:leo;
// 第2个元素是:robin;
3.使用forEach: 有返回值 返回一个新数组 不修改原数组
arr.forEach(callback) 接收一个回调方法。
callback(val,index,array) : 接收三个参数:
item : 当前处理的元素;
index : 当前处理的元素的索引;
array : 正在处理的数组;
var arr =["pingan", "leo", "robin"];
arr.forEach(function(item, index, array){
console.log(`第${i}个元素是:${val}`)
})
4.some 和 every 他们都是根据判断条件,返回给整个数组 Boolean
Array.every(function (a, b, c) {
return a > 0;
});
a: 循环的当前元素
b: 当前下标
c: 原数组
当数组中所有元素满足其条件情况下,返回布尔值 true
当数组中其中一个不满足其条件情况下,返回布尔值 false,立即终止循环
Array.some(function (a, b, c) {
return a > 0;
});
a: 循环的当前元素
b: 当前下标
c: 原数组
当数组中其中一个元素满足其条件情况下,返回布尔值 true (立即终止循环)
当数组中所有不满足其条件情况下,返回布尔值 false
- filter()
将所有在过滤函数中返回 true 的数组元素放进一个新数组中并返回。
语法:
arr.filter(callback)。
参数:
callback(val,index,arr) : 需要执行的函数,接收三个参数:
i : 正在处理的当前元素;
index : 可选,正在处理的当前元素的索引;
arr : 可选,正在操作的数组;
返回值:
一个返回通过测试的元素的数组,若都没有则返回空数组。
var a = [1, "", aa", 13, 6];
var res = a.filter(
function(val, index, arr){
return typeof val == "number";
})
res;//[1, 13, 6];
6.map()
传入一个操作函数,对每个元素执行此方法,并返回一个执行后的数组。
语法:
arr.map(callback)。
参数:
callback(val,index,arr) : 需要执行的函数,接收三个参数:
val : 正在处理的当前元素;
index : 可选,正在处理的当前元素的索引;
arr : 可选,正在操作的数组;
返回值:
一个新数组,每个元素都是回调函数的结果。