Javascript - 映射和回调 - 返回值不受影响

Javascript - map and callback - returning values are not affected

我想在数组上使用 map 方法并回调到另一个函数。一切似乎都工作正常,但最后返回值不受影响。我不知道似乎是什么问题。

var arr=[4,5,3,2];

function multi (x,callback){
 return callback(x*2); 
}

function add(x){
// alert(x);   when I'm alerting "x" here, it's value is multiplied as it should be
return x+3;  

}
var final=arr.map(function(a){multi(a,add); return a;});
final; // returns same values as Array "arr"

您需要return回调中的值

function multi(x, callback) {
    return callback(x * 2);
}

function add(x) {
    return x + 3;
}

var arr = [4, 5, 3, 2],
    final = arr.map(function (a) { return multi(a, add); });
    //                             ^^^^^^
    
console.log(final);
.as-console-wrapper { max-height: 100% !important; top: 0; }

您的回调函数 returns a,与传入的元素相同。因此结果与输入相同。

要获得预期的输出,您应该 return 修改后的结果,例如

var final=arr.map(function(a){return multi(a,add);});

您忘记return返回值

var arr = [4, 5, 3, 2];

function multi(x, callback) {
  return callback(x * 2);
}

function add(x) {
  return x + 3;

}
var final = arr.map(function(a) {
  return multi(a, add);
});

console.log(final)