forEach
array.forEach(function(currentValue, index, array){
//code something
});
- forEach() 方法用于遍历数组的每个元素,并将元素传递给回调函数
- 没有返回值(返回undefined)
- 基本类型数组,不可改变。引用类型数组(除String类型),可以改变
使用场景:并不打算改变数据的时候,而只是想用数据做一些事情 ,比如存入数据库或则打印出来。
map
array.map(function(currentValue, index, array){
return func(currentValue);
});
- map()用来做一次统一映射
- 不改变原数组,生成新的数组,新数组元素个数不变,但是按照一定的条件转换,数组元素发生了变化
使用场景:适用于你要改变数据值的时候
filter
array.filter(function(currentValue, index, array){
return func(currentValue);
});
- filter()用来做一次筛选,把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素
- 不改变原数组,生成新数组,新数组元素个数可能发生了改变,但是数组元素不会发生改变
使用场景:适用于你要过滤数据值的时候
举例:(数据去重)
var aa = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
var r = aa.filter(function (element, index, self) {
return self.indexOf(element) === index;
});
console.log(r);
for循环
for 循环的语法如下:
for (语句 1; 语句 2; 语句 3) {
要执行的代码块
}
语句 1 在循环(代码块)开始之前执行。
语句 2 定义运行循环(代码块)的条件。
语句 3 会在循环(代码块)每次被执行后执行。
for (let i=0; i<10; i++) {
要执行的代码块
}
for循环类似于forEach,具体区别如下:
1、for与forEach都可以遍历数组/集合,不过for则在较复杂的循环中效率更高。
2、forEach不可以删除/修改集合元素,而for可以
3、forEach和for都可以修改元素里面的属性
所以相比较下来for循环更为灵活。