С;检查与本机javascript上指定条件匹配的数据的对象字段

С;检查与本机javascript上指定条件匹配的数据的对象字段,javascript,ecmascript-6,Javascript,Ecmascript 6,我没有javascript方面的经验。我不清楚解决这个问题的最佳方法。 我有本地javascript, 我有一个对象,我需要检查对象的字段是否符合给定的条件 我立即用“如果”做了一个简单的选择 但我认为这是一个非常糟糕的决定。如何才能做得更好 let user = { name: 'test', nickname: 'Doe', age: 25, skills: { skill1: 'go', skill2: 'php',

我没有javascript方面的经验。我不清楚解决这个问题的最佳方法。 我有本地javascript, 我有一个对象,我需要检查对象的字段是否符合给定的条件

我立即用“如果”做了一个简单的选择

但我认为这是一个非常糟糕的决定。如何才能做得更好

    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: {
        }
    }))