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?
<link rel="preload" 的 `type` 值不受支持(字体预加载)