javascript减少数组数组中的find max

时间:2018-03-15 01:31:00

标签: javascript arrays ecmascript-6 mapreduce

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

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]

1 个答案:

答案 0 :(得分:2)

您可以使用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; }