【发布时间】:2020-12-24 16:16:39
【问题描述】:
似乎Array.prototype.sort() 被BigInt 破坏了
这行得通
const big = [1n, 2n, 3n, 4n];
big.sort();
console.log(big);
// expected output: Array [1n, 2n, 3n, 4n]
但这不是:(
const big = [1n, 2n, 3n, 4n];
big.sort((a,b)=>a-b);
console.log(big);
//Error: Cannot convert a BigInt value to a number
还是我做错了什么?
【问题讨论】:
-
这能回答你的问题吗? How to sort an array of integers correctly
-
我认为你误读了这个问题,似乎比较函数只期望整数值作为回报..
-
我相信
BigInt的处理方式与典型数值不同。您可能需要使用一个单独的库,以便更轻松地处理这些类型的值,以便正确地减去这两者。我以前没有使用过BigInt,但根据我有限的理解,这可能是问题的根源。 -
您可以使用
Number(a-b),但不确定这是否是正确的处理方式。它将 BigInt 转换为数字。如果差值大于Number.MAX_SAFE_INTEGER(2^53 - 1),则不起作用 -
在 Mozilla 的网站developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…(在第三个代码块中)找到了这个。它表明不支持按您拥有的方式进行排序,并提供了一种方法来做您正在寻找的事情。
标签: javascript