const shuffleArray = (array: T[]): T[] => shuffleArrayMutate([...array]);
这段代码定义了一个名为 shuffleArray
的泛型函数,该函数接受一个类型为 T[]
的数组作为参数,返回值也是一个类型为 T[]
的数组。
函数体内部使用了扩展操作符 (...array
) 创建了原数组的副本,并将其传递给 shuffleArrayMutate
函数进行处理。这样做的目的是避免对原数组进行修改,保持函数的 "纯粹性"(即同样的输入总是得到同样的输出,且没有副作用)。
然而,在提供的代码片段中,并未包含 shuffleArrayMutate
函数的定义。正常情况下,你可能希望它能够接受一个数组,并返回一个新的、元素顺序已被打乱的数组。例如:
const shuffleArrayMutate = <T>(array: T[]): T[] => {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
};
const shuffleArray = <T>(array: T[]): T[] => shuffleArrayMutate([...array]);
在这个例子中,shuffleArrayMutate
使用了 Fisher-Yates 算法来实现数组的随机排序。