这是使用 .sort() 时未定义的故意行为吗?

问题描述 投票:0回答:1

我试图解决一个 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来反转它。对这种行为有什么想法吗?

javascript arrays sorting undefined reverse
1个回答
0
投票

您可以使用

map
at
轻松反转数组

let arr = [1,2,undefined,3].map((e,i,a) => a.at(-1-i))

console.log(arr)

© www.soinside.com 2019 - 2024. All rights reserved.