我有两个JS对象,我想检查第一个Object是否具有所有第二个Object的键并执行某些操作,否则抛出异常.最好的方法是什么?
function(obj1, obj2){
if(obj1.HasAllKeys(obj2)) {
//do something
}
else{
throw new Error(...);
}
};
Run Code Online (Sandbox Code Playgroud)
例如,在下面的示例中,因为FirstObject具有所有SecondObject的键,所以它应该运行代码:
FirstObject
{
a : '....',
b : '...',
c : '...',
d : '...'
}
SecondObject
{
b : '...',
d : '...'
}
Run Code Online (Sandbox Code Playgroud)
但是在下面的例子中我想抛出一个异常,因为在FirstObject中不存在XXX:
FirstObject
{
a : '....',
b : '...',
c : '...',
d : '...'
}
SecondObject
{
b : '...',
XXX : '...'
}
Run Code Online (Sandbox Code Playgroud)
您可以使用:
var hasAll = Object.keys(obj1).every(function(key) {
return Object.prototype.hasOwnProperty.call(obj2, key);
});
console.log(hasAll); // true if obj2 has all - but maybe more - keys that obj1 have.
Run Code Online (Sandbox Code Playgroud)
作为"一线":
var hasAll = Object.keys(obj1).every(Object.prototype.hasOwnProperty.bind(obj2));
Run Code Online (Sandbox Code Playgroud)
您可以编写一个函数来迭代并检查:
function hasAllKeys(requiredObj, secondObj) {
for (var key in requiredObj) {
if (!secondObj.hasOwnProperty(key)) {
return false;
}
}
return true;
}
hasAllKeys(SecondObject, FirstObject);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
431 次 |
| 最近记录: |