Javascript 快速查看对象是否仅具有具有值的特定属性的方法

Javascript 快速查看对象是否仅具有具有值的特定属性的方法,javascript,object,Javascript,Object,在我的代码中,我有一个具有两个或六个属性的对象,我需要知道是否存在特定的值组合: var myObject = { name: "John Smith", type = "person" prop1: "", prop2: "", prop3: "", prop4: "" }; 或 我需要确定对象是否具有以下两个条件之一: 名称有一个值,类型为“business” name有一个值,类型为“person”,其他四个属性没有值 如果它满足这两个条件之一,我就把它放在一个地

在我的代码中,我有一个具有两个或六个属性的对象,我需要知道是否存在特定的值组合:

var myObject = {
  name: "John Smith",
  type = "person"
  prop1: "",
  prop2: "",
  prop3: "",
  prop4: ""
};

我需要确定对象是否具有以下两个条件之一:

  • 名称有一个值,类型为“business”
  • name有一个值,类型为“person”,其他四个属性没有值
  • 如果它满足这两个条件之一,我就把它放在一个地方,否则我就把它放在另一个地方。如上所示,
    如果type==“business
    prop1-prop4
    在对象中不存在,但是
    如果type==“person”
    ,则存在

    不必每次都特别检查
    prop1-prop4
    的简单方法是什么

    我正在查看lodash函数,看看是否有一个(或多个链接在一起)能起到作用,但我还没有确定一个。我也对纯JS选项持开放态度


    谢谢。

    最简单的方法是以下方法(实际上,它使用的是普通的JavaScript!):

    var myObject1={
    姓名:“约翰·史密斯”,
    类型:“人”,
    建议1:“,
    第2项建议:,
    建议3:“,
    建议4:“”
    };
    变量myObject2={
    名称:“我的企业名称”,
    类型:“业务”
    };
    doStuff(myObject1);
    doStuff(myObject2);
    函数doStuff(obj){
    var属性=Object.keys(obj);
    开关(obj.型){
    案例“人”:
    if([“name”、“prop1”、“prop2”、“prop3”、“prop4”].every(p=>properties.includes(p))){
    //和一个合法的人一起做事
    log(“这个人很好!”);
    }
    打破
    案例“业务”:
    if(包括属性(“名称”)){
    //做一些有效的生意
    log(“这生意很好!”);
    }
    打破
    }
    
    }
    最简单的方法是以下方法(实际上,它使用的是普通的JavaScript!):

    var myObject1={
    姓名:“约翰·史密斯”,
    类型:“人”,
    建议1:“,
    第2项建议:,
    建议3:“,
    建议4:“”
    };
    变量myObject2={
    名称:“我的企业名称”,
    类型:“业务”
    };
    doStuff(myObject1);
    doStuff(myObject2);
    函数doStuff(obj){
    var属性=Object.keys(obj);
    开关(obj.型){
    案例“人”:
    if([“name”、“prop1”、“prop2”、“prop3”、“prop4”].every(p=>properties.includes(p))){
    //和一个合法的人一起做事
    log(“这个人很好!”);
    }
    打破
    案例“业务”:
    if(包括属性(“名称”)){
    //做一些有效的生意
    log(“这生意很好!”);
    }
    打破
    }
    
    }
    您可以使用一个函数和一个
    if
    条件

    var myObject={
    姓名:“约翰·史密斯”,
    类型:“人”,
    建议1:“,
    第2项建议:,
    建议3:“,
    建议4:“”
    };
    变量myObject1={
    名称:“我的企业名称”,
    类型:“业务”
    };
    让checkProps=(obj,objName)=>{
    设{name,type,prop1,prop2,prop3,prop4}=obj,len=name.length;
    如果(len&&type==“业务”| len&&type==“人员”
    &&prop1+prop2+prop3+prop4==“”){
    log(objName+“满足两个条件之一”)
    }否则{
    log(objName+“不满足以下两个条件之一”)
    }
    }
    检查道具(myObject,“myObject”);
    
    checkProps(myObject1,“myObject1”);
    如果符合条件,则可以使用函数和单个

    var myObject={
    姓名:“约翰·史密斯”,
    类型:“人”,
    建议1:“,
    第2项建议:,
    建议3:“,
    建议4:“”
    };
    变量myObject1={
    名称:“我的企业名称”,
    类型:“业务”
    };
    让checkProps=(obj,objName)=>{
    设{name,type,prop1,prop2,prop3,prop4}=obj,len=name.length;
    如果(len&&type==“业务”| len&&type==“人员”
    &&prop1+prop2+prop3+prop4==“”){
    log(objName+“满足两个条件之一”)
    }否则{
    log(objName+“不满足以下两个条件之一”)
    }
    }
    检查道具(myObject,“myObject”);
    
    checkProps(myObject1,“myObject1”);
    ES5的实现方式是什么?我使用的平台还不支持ES6。ES5的实现方式是什么?我使用的平台还不支持ES6。
    var myObject = {
      name: "My Business Name",
      type = "business"
    };
    
    Checking for those conditions inside a function is one solution.   
    var myObject = {
     name: "John Smith",
     type = "person"
     prop1: "",
     prop2: "",
     prop3: "",
     prop4: ""
    };    
    var validated = validateObject(myObject);
     function validateObject(obj){
    
       if((obj[name] &&  obj[type] === "business") || ((obj[name] &&  obj[type] === "person" && !obj[prop1] && !obj[prop2] && !obj[prop3] && !obj[prop4])) ){
        return true;
     }
     return false;
    }