我正在写一个简单的nodejs表达路线,该路线是POST的JSON对象。

作为一个node / js新手,我很好奇,是否有一种优雅的方法来测试JSON对象是否包含我希望提交的所有属性,而仅包含那些属性?

例如如果我有这样的JSON对象:

data:{
   "a":"somevalue".
   "b":"somebvalue",
   "c":"somecvalue"
}


我以为我可以做这样的事情:

if( (data.a) && (data.b) && (data.c) ){
   //Proceed and process post
else {
  // respond with unacceptable
}


只是想知道是否有更好的方法(无论是JavaScript还是表达方式)?

最佳答案

您的代码与所执行的操作并不完全正确。例如,对于可能的有效对象{a:undefined,b:3,c:5},您会认为它没有必需的属性,但实际上却具有。一种更正确的方法(假设原型也可以)是:

("a" in data) && ("b" in data) && ("c" in data)


如果您想要一个可以很好地扩展多个属性的解决方案:

您可以使用Array.prototype.every

if(["a","b","c"].every(function(attr){ return attr in data;})){


它并不短,但我认为它更具语义,并且对于空字符串,null和其他“虚假”值,它不会返回假肯定。当然-您可以将其提取为一个函数:)

Here's a fiddle

关于javascript - 测试JSON对象包含我期望的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17559015/

10-10 00:42
查看更多