数组的最小值和最大值

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,我们将探索如何根据给定函数找到数组中的最小值和最大值。我们将结合使用 reduce() 方法和比较函数来返回数组中的合适元素。在实验结束时,你将很好地理解如何使用此方法根据自定义比较函数找到数组中的最小值和最大值。

如何使用给定函数找到数组的最小值和最大值

要进行编码练习,请打开终端或 SSH 并输入 node

以下是一个函数,它根据给定的设置比较规则的函数返回数组的最小值和最大值:

const reduceWhich = (arr, comparator = (a, b) => a - b) =>
  arr.reduce((a, b) => (comparator(a, b) >= 0 ? b : a));

要使用它,请执行以下步骤:

  1. 使用要处理的数组和可选的 comparator 函数调用 reduceWhich
  2. reduceWhich 函数将结合使用 Array.prototype.reduce()comparator 函数来返回数组中的合适元素。
  3. 如果你省略第二个参数(comparator),将使用默认函数,该函数返回数组中的最小元素。

以下是一些如何使用 reduceWhich 的示例:

reduceWhich([1, 3, 2]); // 1
reduceWhich([1, 3, 2], (a, b) => b - a); // 3
reduceWhich(
  [
    { name: "Tom", age: 12 },
    { name: "Jack", age: 18 },
    { name: "Lucy", age: 9 }
  ],
  (a, b) => a.age - b.age
); // {name: 'Lucy', age: 9}

在上述示例中,第一次对 reduceWhich 的调用返回数组 [1, 3, 2] 的最小值,即 1。第二次调用根据反转比较顺序的 comparator 函数返回同一数组的最大值。第三次调用根据比较对象 age 属性的 comparator 函数返回数组中具有最小 age 属性的对象。

总结

恭喜你!你已经完成了“基于给定函数的数组最小值和最大值”实验。你可以在 LabEx 中练习更多实验来提升你的技能。