亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

搖曳的薔薇 2022-07-08 18:02:45
在 Javascript 中:Math.max 和 Math.min 不適用于 BigInt 類型。例如:> Math.max(1n, 2n)Thrown:TypeError: Cannot convert a BigInt value to a number    at Math.max (<anonymous>)>是否有在 BigInts 上執行這些操作的內置函數?
查看完整描述

2 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

怎么樣


const bigIntMax = (...args) => args.reduce((m, e) => e > m ? e : m);

const bigIntMin = (...args) => args.reduce((m, e) => e < m ? e : m);

如果你想要兩個


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),

);


查看完整回答
反對 回復 2022-07-08
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

經過一番谷歌搜索后,答案似乎是否定的,Javascript 對此沒有內置函數。


這是與內置簽名匹配的 bigint 的 min 和 max 的實現,除了它會為空列表引發錯誤(而不是返回 +/-Infinity,因為 BigInt 不能表示無窮大):


function bigint_min(...args){

    if (args.length < 1){ throw 'Min of empty list'; }

    m = args[0];

    args.forEach(a=>{if (a < m) {m = a}});

    return m;

}


function bigint_max(...args){

    if (args.length < 1){ throw 'Max of empty list'; }

    m = args[0];

    args.forEach(a=>{if (a > m) {m = a}});

    return m;

}


查看完整回答
反對 回復 2022-07-08
  • 2 回答
  • 0 關注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號