关于功能:Javascript – 地图和回调 – 返回值不受影响

Javascript - map and callback - returning values are not affected

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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"

你忘了归还价值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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)


回调函数返回a,该元素与传递给它的元素相同。因此,结果与输入相同。

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

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


您需要从回调返回值

1
2
3
4
5
6
7
8
9
10
11
12
13
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);
1
.as-console-wrapper { max-height: 100% !important; top: 0; }