我试图解决一个 Codewars Kata,它需要 47 字节的代码解决方案来反转 any[] 类型的数组。问题是 - 你不能使用
.reverse()
。作为解决方案,我想出了使用 .sort()
的方法,如下所示:
const reverse = (a: any[]) => a.sort(() => -1);
效果很好,但我遇到了问题
undefined
。因此,像这样的数组 [undefined, 0]
将按预期反转为 [0, undefined]
,但如果您尝试使用此方法反转 [0, undefined]
,它只会返回相同的数组。
const reverse = (a: any[]) => a.sort(() => -1);
console.log(reverse([undefined, 0]));
console.log(reverse([0, undefined]));
我不太明白它在幕后是如何工作的,毕竟我什至没有比较任何东西,只是返回-1来反转它。对这种行为有什么想法吗?
您可以使用
map
和 at
轻松反转数组
let arr = [1,2,undefined,3].map((e,i,a) => a.at(-1-i))
console.log(arr)