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的帮助。非常感谢,请继续这样帮助:)