javascript - 无法验证所有嵌套子元素的长度

标签 javascript angularjs

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

$scope.artists.materials.items[] 

现在我会有几位艺术家,其中包含项目列表,但在此我想检查每个艺术家项目的总长度,如果发现不匹配,那么我想返回 true 或 false。

Problem is when i dont have items for any of the artist then still i am getting false

这里的想法是存储来自第一位艺术家的项目的长度,并确保所有项目都具有相同的项目长度。

代码:

function checkItemsValidity() {
      for (var i = 1; i < $scope.artists.length; index++) {
            if ($scope.artists[i].materials.items != undefined && $scope.artists[0].materials.items) {
                if($scope.artists[i].materials.items.length != $scope.artists[0].materials.items[0].length) {
                             return false;
                }
            }        
                             return false;
        }
            return true;
    }

案例 1:如果只有一位艺术家则返回 true 因为没有其他艺术家可以比较

情况 2:如果 2 位艺术家有 2 件作品,则返回 true 否则为 false;

情况 3:如果有 3 个艺术家,艺术家 1 和艺术家 2 有 2 个项目,艺术家 3 有 5 个项目,则返回 false;

谁能帮我解决这个问题??

最佳答案

据我了解,您只想检查每位艺术家是否拥有相同数量的项目。这段代码:

var result, materialsNumber;
for (var artist of $scope.artists) {
   var artistMaterialsNumber = artist.materials.items.length;
   if (!materialsNumber) {
       materialsNumber = artistMaterialsNumber;
   }
   result = (materialsNumber === artistMaterialsNumber);
   if (!result) {
      break;
   }
}

return result;

应该对此有用。它会记住第一位艺术家的元素数量,并检查其他艺术家是否有相同数量的元素。如果有不同项目编号的艺术家代码中断并返回 false

关于javascript - 无法验证所有嵌套子元素的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39789538/

相关文章:

javascript - 需要帮助限制数组/优化 axios 响应

javascript - HTML:在图像和视频上显示透明封面

AngularJS - 当我在选择标签中使用 ng-repeat 时添加额外的空白选项

javascript - Angular Material md-switch 并搜索一个 Controller 中的输入到另一个 Controller

javascript - JS document.on 用于缓存元素

javascript - 将新值附加到选项选择最后一个值

javascript - 使用 Onclick 事件将 div 移动到容器左侧的任何选项

asp.net-mvc - 如何使用 AngularJs 显示 MVC 登录用户名

javascript - 如何使用 ng-repeat 选择所有元素,但没有一些类

angularjs - 使用 ng-disabled 在 angularjs 中禁用 div