javascript 减少数组数组中的查找最大值

javascript reduce find max in array of arrays

我想分别在数组数组中的每个数组的第一个和第二个元素中找到最大数:

function largestOfElements(mainArray) {
  return mainArray.map(function(subArray) {
    return subArray.reduce(function(previousLargestNumber, currentLargestNumber) {
      return (currentLargestNumber > previousLargestNumber) ? currentLargestNumber : previousLargestNumber;
    }, 0);
  });
}
console.log(largestOfElements([
  [],
  [13, 47],
  [38, 35],
  [24, 34]
]));
.as-console-wrapper {
  max-height: 100% !important;
  top: 0;
}

当前方式return是每个数组中最大数字的数组。 我怎样才能 return 最大的第一个元素和最大的第二个元素? 预期结果将是:

[38, 47]

您可以使用函数reduce

  • reduce 函数的初始值是开始获取最大值的最小值。
  • 检查当前数组的长度。
  • 使用解构赋值获取第一个和第二个值[first, second]。
  • 分别对照第一个和第二个检查当前值以获得最高值。

var array = [
  [],
  [13, 47],
  [38, 35],
  [24, 34]
];

var result = Object.values(array.reduce((a, c) => {
  if (c.length) {
    var [first, second] = c;
    if (first > a.f) a.f = first;
    if (second > a.s) a.s = second;
  }
  
  return a;
}, {f: Number.MIN_VALUE, s: Number.MIN_VALUE}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }