С;检查与本机javascript上指定条件匹配的数据的对象字段
我没有javascript方面的经验。我不清楚解决这个问题的最佳方法。 我有本地javascript, 我有一个对象,我需要检查对象的字段是否符合给定的条件 我立即用“如果”做了一个简单的选择 但我认为这是一个非常糟糕的决定。如何才能做得更好С;检查与本机javascript上指定条件匹配的数据的对象字段,javascript,ecmascript-6,Javascript,Ecmascript 6,我没有javascript方面的经验。我不清楚解决这个问题的最佳方法。 我有本地javascript, 我有一个对象,我需要检查对象的字段是否符合给定的条件 我立即用“如果”做了一个简单的选择 但我认为这是一个非常糟糕的决定。如何才能做得更好 let user = { name: 'test', nickname: 'Doe', age: 25, skills: { skill1: 'go', skill2: 'php',
let user = {
name: 'test',
nickname: 'Doe',
age: 25,
skills: {
skill1: 'go',
skill2: 'php',
skill3: 'best of the best'
}
};
let checkField = (obj) => {
if (
typeof (obj.name) === 'string' &&
typeof (obj.nickname) === 'string' &&
obj.age >= 16 && obj.age <= 50 &&
Object.keys(obj).length > 0
) {
console.log('true')
} else {
console.log('false')
}
};
checkField(user);
虽然根据给定的条件,您遗漏了几件事情,但您尝试做的事情并没有错-
age
的类型是否为number
,以及obj.skills
代替obj
检查它是否为空让用户={
名称:'测试',
绰号:“多伊”,
年龄:25岁,
技能:{
技巧1:“走”,
技能2:‘php’,
技能3:“最好的人中最好的”
}
};
让checkField=(obj)=>{
如果(
objectj.name的类型==='string'&&
对象昵称的类型==='string'&&
obj.age的类型===“编号”&&
obj.age>=16和&obj.age 0
) {
console.log('true')
}否则{
console.log('false'))
}
};
检查字段(用户)代码>我想说,探索像hapi的joi这样的验证库/模块可能是值得的。下面是一个示例,说明了如何提取出所有错误的信息。例如,将以下代码附加到此链接中的输入:
您可以在此处找到完整的api文档:您也可以在上问这个问题,因为他们主要审查代码并为您提供如何改进代码的建议。您可以创建另一个定义验证的对象,并使用通用方法“运行”验证,但是这也就是说,我认为您当前方法的唯一问题是,您正在检查Object.keys(obj)
,而不是Object.keys(obj.skills)
。我认为一切都很好,除了应该首先检查obj&&Object.keys(obj.length>0&&…
。是的,您是对的。谢谢谢谢,看起来不错,但我的解决方案需要原生js。也许我将来会使用这个图书馆!谢谢你的解决方案!
let user = {
name: 'test', == string
nickname: 'Doe', == string
age: 25, number in range 16..50
skills: { not empty object
skill1: 'go', == string
skill2: 'php', == string
skill3: 'best of the best' == string
}
};
const schema = Joi.object().keys({
name: Joi.string(),
nickname: Joi.string(),
age: Joi.number(),
skills: Joi.object().min(1)
})
console.log(schema.validate({
name: 'test',
nickname: 'Doe',
age: 25,
skills: {
skill3: 'best of the best'
}
}))
console.log(schema.validate({
name: 'test',
nickname: 'Doe',
age: 25,
skills: {
}
}))