2026年2月16日 星期一

關於 Set.union()

 關於 Set.union()

前言

  Set.union() 可以提供將兩個 Set 的內容混合在一起,在此把學習的過程做個紀錄。


內容

  範例如下

function setValuesToString(set){
  let resStr = '[';
  let itor = set.values();
  for (const val of itor){
   resStr += val + ',';
  }
  //
  if(resStr.length != 1)
    resStr = resStr.substring( 0 , resStr.length - 1 );
  //
  resStr += ']';
  return resStr
}
//
let setA = new Set(['a','b','c']);
let setB = new Set(['b','c','d','e']);
console.log( setValuesToString( setA.union( setB ) ) );//[a,b,c,d,e]


開頭的 setValuesToString() 是用來將 Set 的內容列印,可以看 關於列印 Set 的內容 。 Set.union() 的使用很簡單,引數是要混合的 Set ,最後透過回傳取得結果的 Set ,並不會改變原本喚起 Set 的內容。


參考資料

[ developer.mozilla.org ] Set


相關文章與資料

關於 JavaScript 的 Set

關於列印 Set 的內容

2026年2月9日 星期一

關於列印 Set 的內容

 關於列印 Set 的內容

前言

  最近需要列印 Set 的內容,結果發現 Set.toString() 並不會如預期的列印內容, Set 本身也沒提供直接列印的方法,那只能自己來了,在此做個紀錄。


內容

  結果如下

let set = new Set(['a','b','c']);

function setValuesToString(set){
  let resStr = '[';
  let itor = set.values();
  for (const val of itor){
   resStr += val + ',';
  }
  //
  if(resStr.length != 1)
    resStr = resStr.substring( 0 , resStr.length - 1 );
  //
  resStr += ']';
  return resStr
}
//
console.log( setValuesToString( set ) );//[a,b,c]
console.log( setValuesToString( new Set() ) );//[]


透過 setValuesToString() 輸入欲取得內容的 Set ,就可以會回傳內容的字串。過程是透過 Set.vlues() 來瀏覽每個內容後加 ',',中間的 subString() 是要覆蓋掉最後一個 ','。


參考資料

[ developer.mozilla.org ] Set


相關文章與資料

關於 JavaScript 的 Set

2026年2月2日 星期一

初探 String.endsWith()

 初探 String.endsWith()

前言

  在之前的 初探 String.startsWith() 介紹 String.startsWith() ,該函式是檢查字首的文字,那有檢查字尾的文字嗎?有的,那就是 String.endsWith() ,在此把學習的過程做個紀錄。


內容

  範例如下

let str = 'Hello world';
console.log( str.endsWith( 'world' ) );//true
console.log( str.endsWith( 'world' , 10 ) );//false
console.log( str.endsWith( 'world' , 100 ) );//true


String.endsWith() 用起來和 String.startsWith() ,參數直接輸入要檢查的文字即可,一樣有位移參數,意思是從該位址往前檢查文字,可以把不輸入位移參數時,這個參數就是 string.length !比較特別的是這個參數可以大於 string.length ,而且功能正常,可以範例的最後一例。


參考資料

[ developer.mozilla.org ] String.prototype.endsWith()


相關文章與資料

初探 String.startsWith()

2026年1月26日 星期一

初探 String.startsWith()

 初探 String.startsWith()

前言

  最近需要檢查字串開頭是否為特定的字串,結果發現官方有提供,也就是 String.startsWith() ,在此把學習的過程做個紀錄。


內容

  範例如下

let str = 'Hello World';
console.log( str.startsWith( 'Hello' ) );//true
console.log( str.startsWith( 'World' , 6 ) );//true


使用起來相當簡單,直接輸入要檢查的字串即可,另外還支援從指定位址檢查,如範例第二例所示。函式的名稱命名有點特別,是 startsWith ,而非 startWith ,注意 start 的後面要加 's' 。


參考資料

[ developer.mozilla.org ] String.prototype.startsWith()

2026年1月19日 星期一

初探 String.toWellFormed()

 初探 String.toWellFormed()

前言

  在先前的 初探 String.isWellFormed() 提到字串可以有不符合 UTF16 格式的字元,JavaScript 有提供 String.toWellFormed() 來消除不符合格式的字元,在此把學習的過程做個紀錄。


內容

  範例如下

console.log( 'Hello world \uD800');//Hello world �
//Followed will be error!
//console.log( encodeURI( 'Hello world \uD800') );
//
console.log( encodeURI( 'Hello world \uD800'.toWellFormed() ) );//Hello%20world%20%EF%BF%BD


如果字串裡含有非 UTF16 格式的字元可以正常顯示嗎?答案是可以的,不會報錯,該字元會用特別符號顯示,如範例第一例。既然可以正常顯示又有必要去除嗎?有些函式因為功能的關係,無法接受含有非 UTF16 格式的字元,如 [ developer.mozilla.org ] encodeURI() ,如果把含有非 UTF16 格式的字元輸入會直接報錯,這時就可以透過 String.toWellFormed() 來修正這個問題。


參考資料

[ developer.mozilla.org ] String.prototype.toWellFormed()

[ developer.mozilla.org ] encodeURI()


相關文章與資料

初探 String.isWellFormed()

2026年1月12日 星期一

初探 String.isWellFormed()

 初探 String.isWellFormed()

前言

  最近在 [ developer.mozilla.org ] String.prototype.isWellFormed() 看到 String.isWellFormed() ,這個函式的名稱直翻很難想到是在做什麼的,所以就點開看看,在此把學習的過程做個紀錄。


內容

  String.isWellFormed() 的功能是用來檢測字串是否是合法的 UTF-16 字串,UTF-16 字串是 JavaScript 的字串編碼格式,如果字串裡被插入不合 UTF-16 格式的字元,可以用 String.isWellFormed() 來確認,範例如下

console.log( 'Hello world'.isWellFormed() );//true
console.log( 'Hello world \uD800'.isWellFormed() );//false


第一例使用正常的字串,所以結果是 true ,第二例在結尾塞一個 \uD800 ,這是在 UTF-16 裡不會出現的字元,所以結果會傳回 false 。


參考資料

[ developer.mozilla.org ] String.prototype.isWellFormed()

2026年1月5日 星期一

關於 Uint8Array.setFromHex()

 關於 Uint8Array.setFromHex()

前言

  在閱覽 Uint8Array 的說明發現有 Uint8Array.setFromHex() ,抽空了解它的作用是什麼,在此把學習的過程做個紀錄。


內容

  範例如下

let str = '0123456789abcdef';
let arHex = Uint8Array.fromHex( str );
arHex.setFromHex( 'ff12' );
console.log( arHex.toHex() );//ff12456789abcdef
//
let arHex1 = Uint8Array.fromHex( 'ff' );
arHex1.setFromHex( '00ff' );
console.log( arHex1.toHex() );//00


Uint8Array.setFromHex() 是提供用字串的方式賦值,就像建構式用字串的方式來賦值,範例透過設置 'ff12' 來賦值,結果可以看到改變是從開頭賦值的,遺憾的是該函式不提供位移,只能從開頭賦值。如果超出賦值範圍會如何呢?因為 Uint8Array 是在建構的時候就確定了大小,如果用 Uint8Array.setFromHex() 超出賦值範圍,可以在範例的賦值 '00ff' 看到,可以成功賦值,不會報錯。


參考資料

[ developer.mozilla.org ] Uint8Array.prototype.setFromHex()


相關文章與資料

初探 Uint8Array.fromHex() 與 Uint8Array.toHex()

再探 Uint8Array.fromHex()