[244 Iterate over Array with map]
问题链接:https://w.freecodecamp.cn/challenges/condense-arrays-with-reduce
参考链接:JavaScript Array map() 方法
Map方法迭代数组
1.问题描述
map 方法可以方便的迭代数组,例子:
var timesFour = oldArray.map(function(val){
return val * 4;
});
map 方法会迭代数组中的每一个元素,并根据回调函数来处理每一个元素,最后返回一个新数组。注意,这个方法不会改变原始数组。
在我们的例子中,回调函数只有一个参数,即数组中元素的值 (val 参数) ,但其实,你的回调函数也可以支持多个参数,譬如:元素的索引index、原始数组arr。
使用 map 方法来为 oldArray 中的每一项增加3,并且在 newArray 中保存它们。 oldArray 不应该被改变。
2.解决方案
var oldArray = [1,2,3,4,5];
// 只能在这一行下面写代码
var newArray = oldArray.map(function(val){return val +3;});
3.问题解释
A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。
字面理解:回调就是一个作为实参传入另一函数的函数,会在父函数执行完成后再执行。
主要用途:目前主要用于耗时操作,比如ajax请求或者文件处理等
- Map不会修改原始数组,会返回一个修改后的新数组,数组中的元素为原始数组元素调用函数处理后的值
- Map方法按照原始数组元素顺序依次处理
- 不会对空数组进行检测
array.map(function(currentValue,index,arr), thisValue)
- currentValue
必须、当前元素值 - index
可选、当前元素索引 - arr
可选、当前元素所属的数组对象 - thisValue
可选,此对象将作为该执行回调时使用,传递给函数用于“this”。如果省略或传入null、undefined那么回调函数使用的this为全局对象。