# 9896-获取数组的中间元素

# 题目描述

通过实现一个 GetMiddleElement 方法,获取数组的中间元素,用数组表示

如果数组的长度为奇数,则返回中间一个元素如果数组的长度为偶数,则返回中间两个元素

  type simple1 = GetMiddleElement<[1, 2, 3, 4, 5]>, // 返回 [3]
  type simple2 = GetMiddleElement<[1, 2, 3, 4, 5, 6]> // 返回 [3, 4]

# 分析

这个题目,可以说是元组匹配关于边界值理解的一个典型题目了,思路很简单,不断匹配中间元素,直到中间元素的长度为 1 或者 2,就是题目要的结果。

# 题解

type GetMiddleElement<T extends any[]> = T['length'] extends 1 | 2
  ? T
  : T extends [any, ...infer M, any]
  ? GetMiddleElement<M>
  : [];

这题目看似风轻云淡哈,其实里面有一些边界条件在里面,可以参考:边界条件的讨论一节 TODO:

当然,也有其他的思路,不过都大差不差,不做过多讨论

# 知识点

  1. 元组匹配套路
  2. 元组匹配边界值问题
Last Updated: 2023/5/16 06:00:28