Javascript 如何比较所有嵌套子元素的长度?

Javascript 如何比较所有嵌套子元素的长度?,javascript,angularjs,Javascript,Angularjs,我有一个包含嵌套子对象的对象,如下所示: $scope.artists.materials.items[] //contains list of items 现在我会有几个艺术家,其中将包含项目列表,但在这我想检查每个艺术家项目的总长度,如果发现不匹配,然后我想返回真或假 对于eg:我有两位艺术家,其中艺术家1包含两个项目,艺术家2仅包含一个项目,这是不匹配的,因为我希望两位艺术家包含相同数量的项目 但在这里,我很困惑,我该如何用AngularJS的方式进行所有这些比较 代码: functi

我有一个包含嵌套子对象的对象,如下所示:

$scope.artists.materials.items[] //contains list of items
现在我会有几个艺术家,其中将包含项目列表,但在这我想检查每个艺术家项目的总长度,如果发现不匹配,然后我想返回真或假

对于eg:我有两位艺术家,其中艺术家1包含两个项目,艺术家2仅包含一个项目,这是不匹配的,因为我希望两位艺术家包含相同数量的项目

但在这里,我很困惑,我该如何用AngularJS的方式进行所有这些比较

代码:

 function checkItemsValidity() {
        angular.forEach($scope.artists, function (artist) {
            alert(artist.materials.items.length);
        });
    }

如何才能更好地做到这一点?

如果所有艺术家都必须拥有相同数量的
项目
,那么只需存储第一位艺术家的
项目
的长度,并确保所有艺术家都拥有相同的
项目
长度。比如:

更新了评论中的建议

function checkItemsValidity() {
    var itemsLength = $scope.artists[0].materials.items.length;
    angular.forEach($scope.artists, function (artist) {
        if(artist.materials.items.length != itemsLength) {
            return false;
        }
    });
    return true;
}

对Lex答案的一个改进:如果没有理由在发现第一个差异后检查其余变量,那么就不需要使用
isValid
变量

function checkItemsValidity() {
  var len = $scope.artists[0].materials.items.length;
  for (var i = 0; i < $scope.artists.length; i++) {
    if ($scope.artists[i].materials.items.length != len) {
      return false;
    }
  }
  return true;
}
函数checkItemsValidity(){
var len=$scope.artists[0]。materials.items.length;
对于(变量i=0;i<$scope.artists.length;i++){
if($scope.artists[i].materials.items.length!=len){
返回false;
}
}
返回true;
}

在发现差异后,您不必要地检查了所有内容。因此使用了“类似”限定符。OP可以根据需要进行自由优化。当然可以。但是,OP可能是初学者,因为这是他/她需要帮助的,所以最好不要教草率的练习。非常感谢lex的帮助。非常感谢,请继续这样帮助:)非常感谢Roope的帮助。非常感谢,请继续这样帮助:)