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;
}

当前方式返回每个数组中最大数字的数组。如何返回第一个元素中最大的元素和第二个元素中最大的元素?预期结果将是:

[38, 47]

您可以使用

函数reduce

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

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; }

var array = [
  [],
  [13, 47],
  [38, 35],
  [24, 34]
];
console.log([0,1].map(i => Math.max(...array.map(v => v[i]).filter(v => v))));

最新更新