Javascript 如何检查对象是否具有某些属性

Javascript 如何检查对象是否具有某些属性,javascript,object,key,Javascript,Object,Key,我有一个对象,有一些非常特殊的键。如何检查另一个对象是否具有完全相同的键? 例如: 让myOb={ 姓名:“某人”, 类别:{ 编号:9, 第节:“C” }, 地址:{ 众议院:22, 街道:“如街道” PIN:7893 } } if(newOb.containsAll(myOb)){//这只是一个替换函数 //做事 } 我想将newOb与myOb匹配,看看他们是否有准确的键。因此,newOb应该有一个名称,类,地址newOb.class应该有一个编号和部分新住址应该有房子,街道和密码 我已经

我有一个对象,有一些非常特殊的键。如何检查另一个对象是否具有完全相同的键? 例如:

让myOb={
姓名:“某人”,
类别:{
编号:9,
第节:“C”
},
地址:{
众议院:22,
街道:“如街道”
PIN:7893
}
}
if(newOb.containsAll(myOb)){//这只是一个替换函数
//做事
}
我想将
newOb
myOb
匹配,看看他们是否有准确的键。因此,
newOb
应该有一个
名称
地址
newOb.class
应该有一个
编号
部分
<代码>新住址应该有
房子
街道
密码


我已经知道
hasOwnProperty()
。我想知道如果涉及多个键,是否有更简单的方法来实现这一点。

您可以比较这两个对象的(递归)键集

const
myObjA={
姓名:“某人”,
类别:{编号:9,节:“C”},
地址:{住宅:22,街道:“Eg街”,PIN:7893}
},
myObjB={
姓名:“其他人”,
类别:{编号:1,节:“A”},
地址:{大厦:11号,街道:“另一街”,PIN:0000}
};
//改编自:https://stackoverflow.com/a/53620876/1762224
const gatherKeys=obj=>{
常数
isObject=val=>typeof val=='object'&&!Array.isArray(val),
addDelimiter=(a,b)=>a?`${a}.${b}`:b,
路径=(obj={},head=''=>Object.entries(obj)
.reduce((产品,[键,值])=>
(完整路径=>isObject(值)
?产品目录(路径(值、完整路径))
:product.concat(完整路径))
(addDelimiter(head,key)),[]);
返回新集合(路径(obj));
};
常数
diff=(a,b)=>新集合(Array.from(a).filter(item=>!b.has(item)),
equalByKeys=(a,b)=>diff(gatherKeys(a),gatherKeys(b))。大小==0;
log(equalByKeys(myObjA,myObjB))

。作为控制台包装{顶部:0;最大高度:100%!重要;}
请在发布之前。更多关于seraching的信息。请参见链接的问题以及和.@T.J.Crowder,我已经看到了。我想知道如果涉及多个键,是否有更简单的方法来实现这一点。如果有,请告诉我。