在运行一些代码之前,我需要检查我正在传递的数据(来自JSON文件)是否正确。

具体来说,我正在尝试检查电子邮件是否存在以及我的身体对象:
-至少有一把钥匙
-每个键都有一个值
-并且该值必须是一个至少包含一项的数组。

const email = "john@gmail.com"
const body = {
   "fruit": ["apple"],
   "vegetables": ["carrot", "beans"]
}


到目前为止,这是我尝试过的方法:

if (email && Object.keys(body).length > 0 && Object.keys(body) instanceof Array) {
   // run some code
} else {
  // log error
}


实例化最好的方法在这里吗?我想知道是否应该使用.isArray()。我也应该在Object.keys或Object.value上执行此操作吗?

谢谢 :)

最佳答案

您可能要使用Object.keys并检查每个值是一个数组,并且至少具有一个值。

Object.keys(body).every(key => Array.isArray(body[key]) && body[key].length !== 0)


对于每个主体键,这将检查其值是一个数组(使用Array.isArray),并且其中至少有一个元素(使用body[key].length)。

此外,仅当所有测试均通过时,.every返回true。

Array.every MDN documentation

Object.keys MDN documentation



const email = "john@gmail.com"
const body = {
   "fruit": ["apple"],
   "vegetables": ["carrot", "beans"]
}

if (email && Object.keys(body).length > 0 && Object.keys(body).every(key => Array.isArray(body[key]) && body[key].length !== 0)) {
   console.log('hooray!');
} else {
  // log error
}

09-30 16:12
查看更多