【问题标题】:Javascript - map and callback - returning values are not affected [duplicate]Javascript-地图和回调-返回值不受影响[重复]
【发布时间】: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"

【问题讨论】:

    标签: javascript function callback array-map


    【解决方案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; }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-08
        • 2014-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-16
        • 2013-09-19
        • 1970-01-01
        相关资源
        最近更新 更多