我正在嘗試在 if 條件下檢查每個條目的鍵和值的物件,但我無法理解我的結果。問題是什么?為什么未定義的不是假的“??” ?
const object = {undefined: "foo", B: "Bazz"}
console.log(Object.entries(object).every(([key, value]) => !!key && !!value))
//true
const object2 = {undefined: null, B: "Bazz"}
console.log(Object.entries(object2).every(([key, value]) => !!key && !!value))
//false
uj5u.com熱心網友回復:
您實際上無法將密鑰設定為undefined. 當您這樣做時{ undefined: "foo" },您實際上是在為字串設定鍵"undefined"。它本質上是一樣的{ "undefined": "foo" }
!!"undefined" && !!"foo"=> true && true=>true因為非空字串是真實的
!!"undefined" && !!null=> true && false=>false因為null是假的
uj5u.com熱心網友回復:
物件的屬性名稱是字串或Symbol. 要檢查該值,您可以獲取不需要的字串陣列并使用includes.
const
check = object => Object
.entries(object)
.every(([key, value]) => !['', 'null', 'undefined'].includes(key) && value);
console.log(check({ a: "foo", B: "Bazz" }));
console.log(check({ undefined: "foo", B: "Bazz" }));
console.log(check({ undefined: null, B: "Bazz" }));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/411923.html
標籤:
上一篇:根據輸入值過濾未知的深層嵌套陣列
下一篇:如何從嵌套物件中獲取密鑰?
