当前位置: 首页 > 知识库问答 >
问题:

在数组的数组上使用map()中的reduce()

晋功
2023-03-14

我正在处理一个freecodecamp挑战,我想知道为什么我的代码不工作,以及如何纠正它。

目标是“返回一个数组,该数组由每个提供的子数组中的最大数组成。”

我的尝试是使用减少作为映射函数映射输入数组:

function largestOfFour(arr) {
    arr = arr.map(function(innerArray){
       innerArray = innerArray.reduce(function(previousValue,currentValue){
           return currentValue > previousValue ? currentValue : previousValue;
       });
    });
    return arr;
}

console.log(largestOfFour([[4, 5, 1, 3],[1, 2, 3, 4]]));

当前输出为:[未定义,未定义]

我应该如何修复我的代码?

共有3个答案

万俟宜修
2023-03-14

还有另一种解决方法

js prettyprint-override">function largestOfFour(arr) {
  return arr.map(function(innerArray) {
    // sort innerArray ascending
    return innerArray.sort(function sort(a, b) {
      return a > b;
    }).pop(); // << get the last element (the max)
  });
}

var result = largestOfFour([
  [4, 5, 1, 3],
  [1, 2, 3, 4]
]);
console.log(result);
document.write(result);
邰伟彦
2023-03-14

有个更简单的方法

function largestOfFour(arr) {
    return arr.map(function(innerArray) {
      return Math.max.apply(null, innerArray);
    });
}

数学。max可以用多个参数调用,如在数学中。max(3,4,5,6)将返回6

使用apply我们可以将参数数组传递给函数,如中所示。应用(此值[3,4,5,6])并执行相同的操作。

因为有一个数组,我们可以映射外部数组,并返回Math的结果。max.apply(thisValue,innerArray),由于这里的thisValue不重要,只需传递null即可。

嵇昱
2023-03-14

map回调中,您应该返回reduce的结果:

function largestOfFour(arr) {
  return arr.map(function(innerArray){
    return innerArray.reduce(function(previousValue,currentValue){
      return currentValue > previousValue ? currentValue : previousValue;
    });
  });
}

请注意,有更短的方法可以做到这一点。

 类似资料:
  • 我有一个名为的数组。它包含一系列对象,每个对象都包含一个名为的属性。我想在数组中的每个对象上重复该数组的内容。 如果我重复通过它在单个数组上运行良好。 但是,我想继续重复,就像这样: 等等。 我的(不正确)解决方案当前看起来如下: 在这种情况下,我假设$index将代表递增的整数,但它不起作用。有人能帮忙吗? 提前感谢...

  • freecodecamp有一个问题,细节如下: 要求: 创建一个函数,该函数查看对象数组(第一个参数),并返回具有匹配名称和值对的所有对象数组(第二个参数)。 例如,如果第一个参数是[{first:“Romeo”,last:“Montague”},{first:“Mercutio”,last:null},{first:“Tybalt”,last:“Capulet”}],并且第二个参数是{last:

  • 本文向大家介绍在JavaScript中操作数组之map()方法的使用,包括了在JavaScript中操作数组之map()方法的使用的使用技巧和注意事项,需要的朋友参考一下  JavaScript 数组map()方法创建一个新的数组使用调用此数组中的每个元素上所提供的函数的结果。 语法 下面是参数的详细信息:     callback : 从当前的元素函数产生新的数组的元素。     thisObj

  • 问题内容: 我有一个数组 如您所见,键0与1、3和4相同。键2与它们全部不同。 在它们上运行array_unique函数时,唯一剩下的是 有什么想法为什么array_unique无法按预期工作? 问题答案: 这是因为使用字符串比较来比较项目。从文档: 注意:当且仅当(string)$ elem1 ===(string)$ elem2,两个元素才被视为相等。换句话说:当字符串表示相同时。将使用第一个

  • 我正在这样使用spring boot和rest模板。 在上面的代码中,我得到了字符串形式的响应。我想将每个值映射到一个pojo类,并将其插入到我的数据库中。现在我还不知道如何将这些数组映射到pojo类中。

  • 本文向大家介绍Swift使用map(_ :)转换数组的元素,包括了Swift使用map(_ :)转换数组的元素的使用技巧和注意事项,需要的朋友参考一下 示例 如Array符合SequenceType,我们可以使用map(_:)转化的阵列A到阵列B使用类型的封闭(A) throws -> B。 例如,我们可以使用它将Ints数组转换为s数组,String如下所示: map(_:)将遍历数组,将给定的