我这里有一个算法,它在每个子数组中找到最高的值,并将其推到一个单独的数组(final)上。
我想让变量“value”等于可能的最小值,这样任何负数都可以被认为高于“value”

function largestOfFour(arr) {
  var final=[];
  arr.map(sub => {
    let value = 0; //issue
    sub.map(num => {
      if(num>value){value=num};
    })
    final.push(value)
  })
  return final;
}
console.log(largestOfFour([[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]]));

在本例中,最后一个子数组返回0,因为该子数组中的非数字高于“value”的初始值0。
我希望它返回'-3',因为它是子数组中的最高数。

最佳答案

您可以将value设置为Number.NEGATIVE_INFINITY,但就其价值而言,我建议在您的内部函数中只使用reduce,而不是map这样,内部循环将以sub[0]作为初始值,而不是依赖于任何占位符。

function largestOfFour(arr) {
  var final = arr.map(sub => sub.reduce((num, value) => Math.max(num, value)));
  return final;
}
console.log(largestOfFour([
  [17, 23, 25, 12],
  [25, 7, 34, 48],
  [4, -10, 18, 21],
  [-72, -3, -17, -10]
]));

10-06 05:08
查看更多