Javascript-地图和回调-返回值不受影响[重复]

Posted

技术标签:

【中文标题】Javascript-地图和回调-返回值不受影响[重复]【英文标题】:Javascript - map and callback - returning values are not affected [duplicate] 【发布时间】:2017-02-10 17:36:58 【问题描述】:

我想在数组上使用 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"

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

是的,谢谢,第一个答案有效,但 var final=arr.map(add); 只会添加到数组中。 @norbidrak:啊,当然,我只是在脑海中忽略了* 2 部分。将编辑删除。【参考方案2】:

你忘了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)

【讨论】:

【参考方案3】:

你需要从回调中返回值

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; 

【讨论】:

以上是关于Javascript-地图和回调-返回值不受影响[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 innerHtml 添加的元素不受 Javascript 库影响

在不受主机页面 CSS 影响的跨域主机页面中创建嵌入式 JavaScript?

JavaScript中foreachmap函数

<link rel="preload" 的 `type` 值不受支持(字体预加载)

为啥 Mongoose 的 JavaScript 在同一行同时有返回和回调?

JavaScript - 返回承诺和/或调用回调?