TypeScript 数组中查找最小、最大n个元素
在TypeScript中,你可以使用以下方法来找出数组中的最小和最大的n个元素:
- 使用
sort()
方法对数组进行排序。 - 使用
slice()
方法获取前n个元素。
以下是实现这一功能的示例代码:
function findMinMaxN<T>(arr: T[], n: number, compareFn?: (a: T, b: T) => number): T[] {
if (n <= 0 || arr.length <= n) {
return [];
}
const sorted = arr.sort(compareFn).slice(0, n);
return sorted;
}
// 示例
const numbers = [4, 2, 8, 6, 3, 5, 1, 7];
const minMax2 = findMinMaxN(numbers, 2); // 找到最小的2个元素
console.log(minMax2); // 输出 [1, 2]
const minMax4 = findMinMaxN(numbers, 4); // 找到最小的4个元素
console.log(minMax4); // 输出 [1, 2, 3, 4]
在这个例子中,findMinMaxN
函数接受一个泛型数组arr
,一个表示需要返回的元素个数n
,以及一个可选的比较函数compareFn
。如果n
大于数组长度,函数将返回空数组。否则,它将使用sort()
方法对数组进行排序(可以通过compareFn
自定义排序规则),然后使用slice()
方法返回前n
个元素。
请注意,如果你需要同时找到最大和最小的n个元素,你可能需要定义一个更复杂的比较函数,或者两次调用findMinMaxN
函数,一次以升序排序,一次以降序排序。
评论已关闭