【问题标题】:Merging arrays with passing a function as parameter通过将函数作为参数传递来合并数组
【发布时间】:2015-06-06 11:50:24
【问题描述】:

我在这个问题上已经解决了大约 3 个小时,但我无法弄清楚。我学过 Codecademy 和 Code School Javascript 课程,根据托管此代码块的博客,我应该知道答案:

var merge = function(array1, array2, callback){  
  //your code here.
}

var x = merge([1, 2, 3, 4], [5, 6, 7, 8], function(a, b){  
  return a + b;
});

//x should now equal [6, 8, 10, 12].

使用正确的代码更新(非常感谢 T.J.!):

var merge = function(array1, array2, callback) {
  var i, newArray = [];

  for (i=0; i < array1.length; i++) {
    newArray[i] = callback(array1[i], array2[i]);   
  }
  return newArray;
};

var x = merge([1, 2, 3, 4], [5, 6, 7, 8], function(a, b){  
  return a + b;
});
console.log(x);

【问题讨论】:

    标签: javascript merge callback


    【解决方案1】:

    merge,你:

    1. 为返回值创建一个新的空白数组。

    2. 考虑一下如果array1array2 的长度不同(尽管它们在示例用法中),您要做什么。

    3. 使用索引变量从0 循环到&lt; array1.length(很可能是for 循环)。

    4. 通过调用callback 填写返回值数组中每个索引的条目,将该索引的条目从array1array2 作为参数传入,并将其返回值存储在您的数组中.

    5. 返回新数组。

    【讨论】:

    • @TJ 谢谢!我只能得到第一个索引的总和(我会继续努力),但我很困惑回调参数在新函数中被 function(a,b) 调用时在做什么?似乎它创建了未使用的附加参数(a,b)?
    • @JoshZandman:请参阅 Evan 的观点——我完全忘记告诉你使用 callback。我已经更新了列表中的 #4 来解释。
    • @T.J.Crowder:我终于想通了!非常感谢您不仅发布答案,还给了我方向。我从这个小练习中学到了很多,感觉很棒。
    • @JoshZandman:很棒的东西,乔希。态度也很棒。 :-)
    • @JoshZandman:关于您在问题中提出的解决方案:一件小事,您没有声明您的 i 变量(我已经为您解决了这个问题)。如果不声明它,你就会成为The Horror of Implicit Globals 的牺牲品。接下来要了解的内容:严格模式。 :-)
    猜你喜欢
    • 2021-03-19
    • 2021-04-13
    • 2018-11-29
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2016-06-12
    相关资源
    最近更新 更多