2024年1月29日 星期一

取得語言名稱的方法

 取得語言名稱的方法

前言

  在先前的 取得地區名稱的方法 介紹取得地區名稱的方法,這次來學習取得語言名稱的方法,在此做個紀錄。


內容

  範例如下

const languageNames = new Intl.DisplayNames("zh-tw", {
  type: "language",

});
console.log( languageNames.of("fr") );//法文 
console.log( languageNames.of("zh") ); //中文
console.log( languageNames.of("fr-CA") );//法文(加拿大) 
console.log( languageNames.of("zh-hant") );//繁體中文 
console.log( languageNames.of("zh-hans") );//簡體中文


取得語言名稱一樣是透過 Intl.DisplayNames() ,在第二個參數的 type 屬性填上 language ,接著就可以一樣透過 of() 來取得語言名稱,取得語言名稱要用語言碼而非地區碼,像法文是 fr ,剛好跟地區名稱一樣,zh 指的是中文,語言也可以有地區性,如 fr-ca ,如果要指繁體中文使用的語言碼是 zh-hant ,而簡體中文的語言碼是 zh-hants 。


參考資料

[ developer.mozilla.org ] Intl.DisplayNames


相關文章與資料

取得地區名稱的方法

2024年1月22日 星期一

取得地區名稱的方法

 取得地區名稱的方法

前言

  最近需要取得區域碼的中文,在此把學習的過程作的紀錄。


內容

  範例如下

const regionNames = new Intl.DisplayNames(['zh-TW'], {
  type: 'region',
});
console.log( regionNames.of('TW') ); // 台灣
console.log( regionNames.of('US') ); // 美國


要取得區域碼的中文可以透過 Intl.DisplayNames() 來取得,參數1 是區域碼,參數2 是選項,區域碼可以透過 [ www.iana.org ] Root Zone Database 來查詢,前方的 zh 是中文的意思,選項的部分只要照著範例輸入就是取得區域碼,由於 Intl.DisplayNames() 並非單純設計來取得區域碼,如需要了解更多可以到 [ developer.mozilla.org ] Intl.DisplayNames 。使用 Intl.DisplayNames()  要注意是透過 new 來取得 Object ,而非直接喚起!接著就可以透過 of() 來取得區域碼的中文。 Intl.DisplayNames()  的參數1 會決定最後輸出的語言, of() 是查詢的結果,這是兩個地方輸入區域碼的不同之處。


參考資料

[ developer.mozilla.org ] Intl.DisplayNames

[ www.iana.org ] Root Zone Database

[ blog.othree.net ] zh-tw還是zh-TW

2024年1月15日 星期一

初探 WeakSet

 初探 WeakSet

前言

  在先前的 初探 WeakMap 學習 WeakMap ,這次學習 WeakSet ,在此把學習的過程做個紀錄。


內容

  範例如下

let set = new WeakSet();
let obj1 = {};
let obj2 = {};
let obj3 = {};
//
set.add( obj1 );
set.add( obj2 );
//
console.log( set.has( obj1 ) );//true
console.log( set.has( obj3 ) );//false
//
set.delete( obj1 );
console.log( set.has( obj1 ) );//false


WeakSet 與 WeakMap 相似,功能是存放 Object 的 Set 。範例透過 WeakSet.add() 來新增,用WeakSet.has() 確認存在,如果要消除可以透過 WeakSet.delete(),用起來其實跟 Set 沒什麼兩樣,不過 WeakSet 不用像 WeakMap 擔心內容從外部移除,因為 WeakSet 只有 key ,而沒有 value。


參考資料

[ developer.mozilla.org ] WeakSet


相關文章與資料

初探 WeakMap

2024年1月8日 星期一

初探 WeakMap

 初探 WeakMap

前言

  最近抽空學習 WeakMap ,在此把學習的過程做個紀錄。


內容

  WeakMap 用起來跟 Map 很像 ,只是 Key 的部分用的是 Object ,範例如下

let wm = new WeakMap();
let obj1 = {};
let obj2 = {};
let obj3 = {};
//
wm.set( obj1 , 1234 );
console.log( wm.get(obj1) );//1234
//
wm.delete( obj1 );//
console.log( wm.get(obj1) );//undefined
console.log( obj1 !== undefined );//true
//
obj1 = undefined;
console.log( obj1 !== undefined );//false
//
wm.set( obj2 , obj3 );
console.log( wm.get(obj2) !== undefined );//true
obj2 = undefined;
console.log( obj3 !== undefined );//true


範例開始用 obj1 示範了 get() 與 set() 的基本用法,接著用 delete() 來刪除 ,要注意刪除後 obj1 不會被刪除,接著就是 WeakMap 與 Map 最大的不同, Map 不需要擔心 Key 會被從外部刪除,但 WeakMap 就要考慮,範例將 obj1 設為 undefiend 後就會發生 Key 消失,也正因為 obj1 消失,所以也就沒辦法用 get() 方式取得資料了!接著範例示範 Key 與 Value 都是 Object ,實驗如果 Key 消失了,Value 也會被刪除嗎?結果 Value 還是存在,只有 Key 會消失。


參考資料

[ developer.mozilla.org ] WeakMap

2024年1月1日 星期一

變壓器接頭改造

 變壓器接頭改造

前言

  最近 [ www.octopus.com.tw ] 筆型刻模機 8pc 110v/220v 會發生一下有電一下沒電,只要轉一下變壓器的接頭就可以改善沒電的狀況,所以就研判是變壓器接頭接觸不良,在此把解決的過程做個紀錄。


內容

  變壓器接觸不良的問題,只要重買一個原廠的變壓器即可,但是我一直很介意原廠的變壓器接頭是"L"字的彎頭,彎頭在操作刻模機時會很礙事,所以我想直接買一個同規格的變壓器且是直頭來取代,上網搜索了一下,結果發現 18V 是個不常見的規格,所以選擇很少,找到了電壓符合的,但接頭卻是彎頭。

  在搜尋的過程中也發現有變壓器的接頭是可以換接頭的,所以如果要直頭 18V 的話,只能指望透過可換接頭變壓器加上對應接頭,量了一下原廠接頭,發現規格是 3.5*1.35mm ,所以最後就買了18V/1A 可換接頭變壓器與對應的  3.5*1.35mm 接頭。


  買回來使用後發現刻模機遽然不會動!本以為是接頭規格不正確,結果發現是接頭的長度不一樣,如下圖


接頭的長度差異


圖中的綠色是買來的接頭的原始長度,紅色的部分是多切出來的長度,可以使用刻模機搭配磨頭來削切,切完之後再插入刻模機後就可使用。


  雖然最後我得到了直頭的變壓器,但我還是不禁廠商刻意把接頭做的很長是不是故意的?廠商選用不常見的規格就可以逼消費者買原廠變壓器,作為消費者的我很難認同,不過還好這次我可透過改造接頭來達到目的。


參考資料

[ www.octopus.com.tw ] 筆型刻模機 8pc 110v/220v