使用 JavaScript 查找数组中的最小值和最大值

新手上路,请多包涵

我正在尝试编写一种算法来查找数组中的最小值和最大值,以及第二大值和第二小值。

我尝试了以下内容:

 numbers = [2, 4, 9, 2, 0, 16, 24]

var largest = numbers[0];
var smallest = numbers[0];

for (var i = 1; i < numbers.length; i++) {

  if (numbers[i] > largest) {
    largest = numbers[i];
  } else if (numbers[i] < smallest) {
    smallest = numbers[i];
  }

  console.log(largest);
  console.log(smallest);
}

这似乎不起作用,只是打印出数组……我做错了什么?

原文由 MadCatm2 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 251
2 个回答

最简单的方法是对数组进行排序,然后返回前两个和最后两个元素。

使用 slice() 防止数组本身被排序:

 var numbers = [2, 4, 9, 2, 0, 16, 24];

var sorted = numbers.slice().sort(function(a, b) {
  return a - b;
});

var smallest = sorted[0],
    secondSmallest = sorted[1],
    secondLargest = sorted[sorted.length - 2],
    largest  = sorted[sorted.length - 1];

console.log('Smallest: ' + smallest);
console.log('Second Smallest: ' + secondSmallest);
console.log('Second Largest: ' + secondLargest);
console.log('Largest: ' + largest);

原文由 Rick Hitchcock 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 扩展运算符 将每个数组元素作为参数传递给 Math.min()Math.max()

使用此方法,您可以找到数组中的最小和最大数字:

 const numbers = [2, 4, 9, 2, 0, 16, 24];

const smallest_number = Math.min(...numbers);
const largest_number = Math.max(...numbers);

console.log('Smallest Value:', smallest_number); // Smallest Value: 0
console.log('Largest Value:', largest_number);   // Largest Value: 24

原文由 Grant Miller 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题