在运行一些代码之前,我需要检查我正在传递的数据(来自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
}