Simper日记(2020/4/14)
js中的foreach使用学习
常用的循环方式
(一)第一种
//使用临时变量,将长度缓存起来,避免重复获取数组长度,
当数组较大时优化效果才会比较明显。
var array = [1,2,3,4,5,6,7];
for (var i = 0; i < array.length; i) {
//i 索引
//array 数组对象
}
(二)第二种
//可以正确响应break、continue和return语句
for(let index in array) {
//index 索引值
//array 数组对象
};
for(let index of array) {
//index 索引值
//array 数组对象
};
(三)第三种
array.forEach(function(currentValue, index, arr){
//currentValue 必需。当前元素
//index 可选。当前元素的索引值
//arr 可选。当前元素所属的数组对象
});
//es6写法
//返回值为undefined
array.forEach((currentValue, index, arr)=>{
//currentValue 必需。当前元素
//index 可选。当前元素的索引值
//arr 可选。当前元素所属的数组对象
});
(四)第四种
//有返回值
//map的回调函数中支持return返回值;
return的是啥,相当于把数组中的这一项变为啥(并不影响原来的数组,
只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了);
let newMap = array.map(function(currentValue, index, arr){
//currentValue 必需。当前元素
//index 可选。当前元素的索引值
//arr 可选。当前元素所属的数组对象
});
forEach()会改变原始的数组的值,
而map()会返回一个全新的数组,
原本的数组不受到影响。
forEach()的执行速度比map()慢了70%
forEach适合于你并不打算改变数据的时候,
而只是想用数据做一些事情 – 比如存入数据库或则打印出来。
map()适用于你要改变数据值的时候。
不仅仅在于它更快,而且返回一个新的数组。
这样的优点在于你可以
使用复合(composition)(map(), filter(), reduce()等组合使用)
来玩出更多的花样。
能用forEach()做到的,map()同样可以。反过来也是如此。
map()会分配内存空间存储新数组并返回,forEach()不会返回数据。
forEach()允许callback更改原始数组的元素。map()返回新的数组。