Javascript 中 BigInt 类型的 Math.max 和 Math.min 的替代方案

Dan*_*JAB 12 javascript bigint

在 Javascript 中:Math.max 和 Math.min 不适用于 BigInt 类型。

例如:

> Math.max(1n, 2n)
Thrown:
TypeError: Cannot convert a BigInt value to a number
    at Math.max (<anonymous>)
>
Run Code Online (Sandbox Code Playgroud)

是否有内置函数可以对 BigInts 执行这些操作?

gma*_*man 11

怎么样

const bigIntMax = (...args) => args.reduce((m, e) => e > m ? e : m);
const bigIntMin = (...args) => args.reduce((m, e) => e < m ? e : m);
Run Code Online (Sandbox Code Playgroud)

如果你两个都想要的话

const bigIntMinAndMax = (...args) => {
  return args.reduce(([min,max], e) => {
     return [
       e < min ? e : min, 
       e > max ? e : max,
     ];
  }, [args[0], args[0]]);
};

const [min, max] = bigIntMinAndMax(
   BigInt(40),
   BigInt(50),
   BigInt(30),
   BigInt(10),
   BigInt(20),
);
Run Code Online (Sandbox Code Playgroud)