2023年11月27日 星期一

關於 Number 物件

 關於 Number 物件

前言

  最近發現 JavaScript 有 Number 物件,發現用起來根想得不太一樣,在此把學習的過程做個紀錄。

 

內容

  範例如下

let numObj = new Number(1234);
console.log(typeof numObj);//"object"
//
let num1 = 1 + numObj;
let num2 = numObj + 2;
console.log( num1 );//1235
console.log(typeof num1);//"number"
console.log( num2 );//1236
console.log(typeof num2);//"number"
console.log( Number.isSafeInteger(numObj )  );//false
console.log( Number.isSafeInteger(Number(numObj) )  );//true


範例開頭使用 new Number() 的方式創建,用 typeof 確定型別是 object ,而非 number ,接著分別測試先加與後加的結果,也就是 num1 與 num2  ,這裡的結果根想的不一樣,無論先加或後加的結果都是 number  ,而非 object ,最後範例透過 Number.isSafeInteger()  來測試發現結果是 false ,表示在輸入參數時並不像運算時一樣會自動轉型,要如何把 Number 物件轉乘 Number 呢?透過 Number() ,不過這次不要使用 new 的方式,而是直接透過建構式的結果就可以轉型。

 

參考資料

developer.mozilla.org ] Number() constructor

2023年11月20日 星期一

Object.fromEntries() 用於 Set 的注意事項

 Object.fromEntries() 用於 Set 的注意事項

前言

  Object.fromEntries() 可以適用 Map 與 Array ,那可以用於 Set 嗎?答案是可以的,但有個注意事項,在此把學習的過程做個紀錄。


內容

  範例如下

let valueSet1 = new Set( [ 'z' , 12 , 'abc' , 1234 ] );
let valueSet2 = new Set( [ 'z' , 12 , 'abc' , 1234 , '12'] );
//
console.log( valueSet1.size );//4
console.log( Object.fromEntries(valueSet1.entries() ) );
// [object Object] {
//   12: 12,
//   1234: 1234,
//   abc: "abc",
//   z: "z"
// }
//
console.log( valueSet2.size );//5
console.log( Object.fromEntries(valueSet2.entries() ) );
// [object Object] {
//   12: "12",
//   1234: 1234,
//   abc: "abc",
//   z: "z"
// }


範例對 valueSet1 使用 Object.fromEntries() ,要注意不是直接餵,餵之前要透過 Set.entries() ,結果會產生 Key 與 Value 都一樣的 Object ,valueSet2 和 valueSet1 的差異是多了個字串 '12' ,透過 Set.sized可以知道確實有 5 個內容,但經過 Object.fromEntries() 後卻只會剩 4 個!在數字 12 與 字串 12 的部分由於結果是一樣的,所以只會留下一個。


參考資料

[ developer.mozilla.org ] Set

[ developer.mozilla.org ] Object.fromEntries()

2023年11月13日 星期一

Object.fromEntries() 用於 Array 的注意事項

 Object.fromEntries() 用於 Array 的注意事項

前言

  在 透過 Object.fromEntries() 將 Array 快速複製到 Object 提到 Object.fromEntries() 用於 Array 的範例有提到用在數值做佚代的 Array 會有問題,但查了一下發現有解決方法,仔此把學習的過程做個紀錄。


內容

  範例如下

let ar = [
  [ 'a' , 123 ],
  [ 'b' , 456 ]
];
let ar1 = [ 123 , 456 , 789 ];
//
console.log( Object.fromEntries(ar ) );
// [object Object] {
//   a: 123,
//   b: 456
// }
//
//
console.log( Object.fromEntries(ar1.entries() ) );
//
console.log( Object.fromEntries(ar.entries() ) );
// [object Object] {
//   0: ["a", 123],
//   1: ["b", 456]
// }


範例開頭示範對 ar 使用 Object.fromEntries() ,接著對以數值為佚代的 Array 使用 Object.fromEntries()  ,但這次會在使用前喚起 Array.entries() ,接著發現這樣就可以正常複製,Array.entries() 到底做了什麼呢?所以接著拿 ar 來實驗會發現 Array.entries() 做的是強制把每個內容用數值當佚代的結果,所以複製的結果會變成使用數值當索引,而內容變成了陣列!


參考資料

[ developer.mozilla.org ] Object.fromEntries()


相關文章與資料

透過 Object.fromEntries() 將 Array 快速複製到 Object

2023年11月6日 星期一

透過 Object.fromEntries() 將 Array 快速複製到 Object

 透過 Object.fromEntries() 將 Array 快速複製到 Object

前言

  在先前的 透過 Object.fromEntries() 將 Map 快速複製到 Object 裡透過 Object.fromEntries() 將 Map 複製到 Object ,但查了一下發現不只 Map ,其實連 Array 也可以,在此把學習的過程做個紀錄。

 

內容

  範例如下

let ar = [
  [ 'a' , 123 ],
  [ 'b' , 456 ]
];
let ar1 = [ 123 , 456 , 789 ];
//
console.log( Object.fromEntries(ar) );
// [object Object] {
//   a: 123,
//   b: 456
// }
//
//follow has error!
//console.log( Object.fromEntries(ar1) );


複製的用法和 Map 一樣,不過一定要注意如果用的是用數值做佚代的陣列時會發生錯誤。


參考資料

[ developer.mozilla.org ] Object.fromEntries()


相關文章與資料

透過 Object.fromEntries() 將 Map 快速複製到 Object