我当前的代码有以下条件检查。
if(
angular.equals({},obj1) &&
angular.equals({},obj2) &&
angular.equals({},obj3) &&
angular.equals({},obj4)
){
return true;
}else {
return false;
}
没有为4个对象编写这4个条件,这个选项有没有任何捷径可以减少verbos?因为这样,如果引入了另外一个对象obj5
,那么我需要再添加一行。
答案 0 :(得分:0)
将对象放入数组中 - 并对数组运行.every
检查:
function isEmptyObjs(arrayOfObjs) {
//If every element in the array is an empty object, returns true
return arrayOfObjs.every(function(obj) {
return angular.equals({}, obj);
});
}
用法:
var areObjectsEmpty = isEmptyObjs([{}, {x: 1}, {}]); //returns false
var areObjectsEmpty2 = isEmptyObjs([{}, {}, {}]); //returns true
答案 1 :(得分:0)
另一个选择就是使用extend
。它更具可读性,但(imho)代码的意图有点模糊:
if(angular.equals({},angular.extend({},obj1,obj2,obj3,obj4)) { return true; }
仍然......代码更简单,对吧? extend会快乐地从所有这些对象添加属性到{}然后返回一个不相等的。我会说这会慢一点,但你正在使用&& - 所以你在你的&&amp ;;中做同样类型的重载代码的版本。