Open yunliuyan opened 10 months ago
创新一个临时数组 Temp,若U和对应T的第一个数组不想当,将T的第一个数组塞入到Temp里面,继续遍历T,直到找到,找到则返回临时数组的长度
type IndexOf<T extends any[], U extends any, Temp extends any[] = []> =
T extends [infer F, ...infer O]
? F extends U
? Temp['length']
: IndexOf<O, U, [...Temp, F]>
: -1
type IndexOf<T extends any[], P extends any, Arr extends any[] = []> =
T extends [infer X, ...infer Y] ? X extends P ? Arr['length'] : IndexOf<Y, P, [X, ...Arr]> : -1;
type Res = IndexOf<[1, 2, 3], 2>; // expected to be 1
type Res1 = IndexOf<[2,6, 3,8,4,1,7, 3,9], 3>; // expected to be 2
type Res2 = IndexOf<[0, 0, 0], 2>; // expected to be -1
IndexOf
![#array](https://img.shields.io/badge/-%23array-999)
Implement the type version of Array.indexOf, indexOf<T, U> takes an Array T, any U and returns the index of the first U in Array T.