2024年7月8日 星期一

初探 Intl.NumberFormat.formatRangeToParts()

 初探 Intl.NumberFormat.formatRangeToParts()

前言

  在上次 初探 Intl.NumberFormat.formatToParts() 介紹了 formatToParts() ,這次學習的 formatRangeToParts() 跟它很像,在此把學習的過程做個紀錄。


內容

  範例如下

let parts = new Intl.NumberFormat("en-US", {
  style: "currency",
  currency: "USD",
}).formatRangeToParts( 123.45 , 1500);
console.log(parts);

// [[object Object] {
//   source: "startRange",
//   type: "currency",
//   value: "$"
// }, [object Object] {
//   source: "startRange",
//   type: "integer",
//   value: "123"
// }, [object Object] {
//   source: "startRange",
//   type: "decimal",
//   value: "."
// }, [object Object] {
//   source: "startRange",
//   type: "fraction",
//   value: "45"
// }, [object Object] {
//   source: "shared",
//   type: "literal",
//   value: " – "
// }, [object Object] {
//   source: "endRange",
//   type: "currency",
//   value: "$"
// }, [object Object] {
//   source: "endRange",
//   type: "integer",
//   value: "1"
// }, [object Object] {
//   source: "endRange",
//   type: "group",
//   value: ","
// }, [object Object] {
//   source: "endRange",
//   type: "integer",
//   value: "500"
// }, [object Object] {
//   source: "endRange",
//   type: "decimal",
//   value: "."
// }, [object Object] {
//   source: "endRange",
//   type: "fraction",
//   value: "00"
// }]


partValues = parts.map((p) => p.value);
console.log(partValues);//["$", "123", ".", "45", " – ", "$", "1", ",", "500", ".", "00"]



用法和 formatToParts() 很像,指示輸入需要輸入兩個數值來表達範圍,輸出的結果會是個陣列,裡面會有分割好的各部位資料,如果要直接提取可以透過 map() 來提取所有的數值,就像範例的 partValues 一樣,如此就可以直接提取各個部位的資料。

參考資料

[ developer.mozilla.org ] Intl.NumberFormat


相關文章與資料

初探 Intl.NumberFormat.formatToParts()

沒有留言:

張貼留言