在混合数组中,为什么排序出来的结果是这样的?
const mixed = [4n, 6, -12n, 10, 4, 0, 0n];
// ↪ [4n, 6, -12n, 10, 4, 0, 0n]
mixed.sort();
// ↪ [-12n, 0, 0n, 10, 4n, 4, 6]
问题1:为什么0n排在0后面?
问题2:为什么4n排在10后面?而在浏览器控制台输入“10<4n”得到的却是false呢?
希望有了解这个问题的大佬可以解答一下~~
在混合数组中,为什么排序出来的结果是这样的?
const mixed = [4n, 6, -12n, 10, 4, 0, 0n];
// ↪ [4n, 6, -12n, 10, 4, 0, 0n]
mixed.sort();
// ↪ [-12n, 0, 0n, 10, 4n, 4, 6]
问题1:为什么0n排在0后面?
问题2:为什么4n排在10后面?而在浏览器控制台输入“10<4n”得到的却是false呢?
希望有了解这个问题的大佬可以解答一下~~
数组自带的sort方法,是将数组内元素转为字符串,然后按位通过acsii码排序
和有没有bigint无关,就算用 [10,4,3,21,-6] 排序的结果 10 和 21 也会在 4 前面,因为他们的第一位 1 和 2 在4前面
另外 4 和 4n 的先后关系,他们转为字符串后都是 '4' 所以比较上是相等的不会有先后顺序,所以会继承原本的先后顺序,原本4n在前面,排序后就在前面