如果使用 ES6 为 null 或 undefined,如何检查对象的每个键和值?
How check an object's every key and value if null or undefined with ES6?
我试图在 if 条件下检查一个对象的每个条目的键和值,但我无法理解我的结果。问题是什么?为什么 undefined 不是 false with "??" ?
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
您实际上不能将密钥设置为 undefined
。当您执行 { undefined: "foo" }
时,您实际上是将密钥设置为字符串 "undefined"
。它与 { "undefined": "foo" }
基本相同
!!"undefined" && !!"foo"
=> true && true
=> true
因为非空字符串是真实的
!!"undefined" && !!null
=> true && false
=> false
因为 null
是假的
对象的属性名称是字符串或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" }));
我试图在 if 条件下检查一个对象的每个条目的键和值,但我无法理解我的结果。问题是什么?为什么 undefined 不是 false with "??" ?
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
您实际上不能将密钥设置为 undefined
。当您执行 { undefined: "foo" }
时,您实际上是将密钥设置为字符串 "undefined"
。它与 { "undefined": "foo" }
!!"undefined" && !!"foo"
=> true && true
=> true
因为非空字符串是真实的
!!"undefined" && !!null
=> true && false
=> false
因为 null
是假的
对象的属性名称是字符串或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" }));