2024年7月22日 星期一

複製 Intl.NumberFormat 的參數

 複製 Intl.NumberFormat  的參數

前言

  Intl.NumberFormat 在初始化時可以輸入很多參數,如果需要用同樣的參數但不同的地區該如何達成? Intl.NumberFormat 有提供複製參數的方法,在此把學習的過程做個紀錄。


內容

  範例如下

let numFormatUS = new Intl.NumberFormat("en-US", {
  style: "currency",
  currency: "USD",
  maximumFractionDigits: 2,
  roundingIncrement: 5,
  roundingMode: "halfCeil",
});
let options = numFormatUS.resolvedOptions();
console.log( options.locale );//en-US
console.log( options.currency );//USD
//
let numFormatTW = new Intl.NumberFormat( "zh-TW",options );

console.log( numFormatUS.format(10) );//$10.00
console.log( numFormatTW.format(10) );//US$10.00
//
console.log( numFormatTW.format(10.255) );//US$10.25


複製參數是透過 Intl.NumberFormat.resolvedOptions() ,回傳值是個 Object ,裡面有全部的參數,範例分別顯示了 locale 與 currency ,接著進行複製,複製時發現參數本身有 locale ,但初始化的第一個參數也是 locale ,哪會以哪個為主?結果是以初始化的第一個參數為主,回傳的 option 只是拿來讀取的,在複製時不會有作用,最後用顯示 10.255 來檢測 maximumFractionDigits 有沒有確實被複製,結果正確。


參考資料

[ developer.mozilla.org ] Intl.NumberFormat

沒有留言:

張貼留言