从高阶函数返回数组
Returning an array from a higher order function
function map(arr, fn){
for(var i = 0; i <arr.length; i++){
fn(arr[i]);
//some code here
}
}
map([1,2,3,4], function(val){
return console.log(val * 2);
});
我在尝试将结果转换为数组形式时遇到问题。例如,[2,4,6,8]。我觉得我知道该怎么做,但我脑子一片空白。
您的回调需要return数组中每个项目的新值,您需要创建一个包含这些值的新数组
function map(arr, fn){
return arr.map(fn);
}
var res = map([1,2,3,4], function(val){
return val * 2;
});
console.log(res)
回调 (fn
) 应该改变手头的数组值,map
应该 return 数组。请参阅片段。此外:只需使用我会说的原生 Array.map
方法(see mdn)
function map(arr, fn){
for(var i = 0; i <arr.length; i++){
arr[i] = fn(arr[i]);
}
return arr;
}
console.log(
map([1,2,3,4], function(val){ return val*2; })
);
// but hey, who needs it
console.log([1,2,3,4].map(v => v*2));
function map(arr, fn){
for(var i = 0; i <arr.length; i++){
fn(arr[i]);
//some code here
}
}
map([1,2,3,4], function(val){
return console.log(val * 2);
});
我在尝试将结果转换为数组形式时遇到问题。例如,[2,4,6,8]。我觉得我知道该怎么做,但我脑子一片空白。
您的回调需要return数组中每个项目的新值,您需要创建一个包含这些值的新数组
function map(arr, fn){
return arr.map(fn);
}
var res = map([1,2,3,4], function(val){
return val * 2;
});
console.log(res)
回调 (fn
) 应该改变手头的数组值,map
应该 return 数组。请参阅片段。此外:只需使用我会说的原生 Array.map
方法(see mdn)
function map(arr, fn){
for(var i = 0; i <arr.length; i++){
arr[i] = fn(arr[i]);
}
return arr;
}
console.log(
map([1,2,3,4], function(val){ return val*2; })
);
// but hey, who needs it
console.log([1,2,3,4].map(v => v*2));