【问题标题】:How check an object's every key and value if null or undefined with ES6?如果使用 ES6 为 null 或 undefined,如何检查对象的每个键和值?
【发布时间】:2022-01-13 18:17:12
【问题描述】:

我正在尝试在 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

【问题讨论】:

  • 键是对象的字符串或符号。 'undefined' 是一个字符串。顺便说一句,你为什么期待不同的结果?
  • 我想测试如果我得到未定义的键会发生什么。我不知道它像字符串一样管理。

标签: javascript object ecmascript-6


【解决方案1】:

您实际上无法将密钥设置为undefined。当您执行{ undefined: "foo" } 时,实际上是将密钥设置为字符串"undefined"。与{ "undefined": "foo" }基本相同

!!"undefined" && !!"foo" => true && true => true 因为非空字符串是真实的

!!"undefined" && !!null => true && false => false 因为null 是假的

【讨论】:

    【解决方案2】:

    对象的属性名称是字符串或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" }));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 2010-11-03
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多