NodeJS检查对象属性是否为空。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NodeJS检查对象属性是否为空。相关的知识,希望对你有一定的参考价值。

我在nodejs上工作,我想检查我的对象属性是否在使用过滤器时不是空的。

propositions = propositions.filter((prop) => 
  return prop.issuer.city.equals(req.user.city._id);
);

prop.issuer 在某些时候可能是空的,我想避免在它是空的时候进行比较。

我试过了,但是没有用。

propositions = propositions.filter((prop) => 
  return prop.issuer?.city.equals(req.user.city._id);
);
答案

你使用的?语法是下一代JS,并不是所有浏览器都支持(不知道Node是否支持,但如果支持,可能不是所有版本的Node都支持)。

return prop.issuer?.city.equals(req.user.city._id)

不过你可以只使用简单的if语句来克服这个问题(这是在Babel等下一代JS工具中幕后发生的事情)。

下面是一个例子。

propositions = propositions.filter(prop => 

          //this if will allow all items with props.issuer to pass through
          //could return false if you want to filter out anything without prop.issuer instead
          //Note null==undefined in javascript, don't need to check both
          if(prop.issuer==undefined)return true;

          //below will only be made if prop.issuer is not null or undefined
          return prop.issuer.city.equals(req.user.city._id)
        )
另一答案
propositions = propositions.filter(prop => prop.issuer ? prop.issuer.city.equals(req.user.city._id) : false)

我假设你想过滤掉 命题null 发行人这就是为什么我用 false 作为三元操作数的第三个操作数,如果我说错了,就用 true.

以上是关于NodeJS检查对象属性是否为空。的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS - 如何检查 MySQL 结果是不是未定义/为空?

Javascript:检查对象是不是没有属性或映射/关联数组是不是为空[重复]

检查表单元素的值是否为空

JavaScript,检查嵌套对象属性是不是为空/未定义的优雅方法[重复]

Vue/JS - 检查两个对象的所有值是不是为空

java中判断对象中某个属性是否为空