过滤范围数组忽略某些项目

时间:2017-05-30 08:53:27

标签: angularjs

我有一个名为$scope.groups

的范围数组
$scope.groups = [{
                  id: 1,
                  name: "Group 1"
                 },
                 {
                  id: 2,
                  name: "Group 2"
                 }]

当我更新其中一个组时,我需要检查组数组中是否存在更新的组,但是当我过滤数组时,它会检查我需要更新的组,因此输出“Group exists”。

 function ifGroupExists(GroupName,GroupId) {
            var match;
             match = $scope.groups.filter(function (item) { return angular.lowercase(item.name) === angular.lowercase(GroupName); });

                if (match.length > 0) {
                    console.log("group exists");
                    return true;
                }
                else {
                    console.log("group does not exists");
                    return false;
                }


        }

如果我在数组中添加一个全新的组,此代码可以正常工作但是如何编辑它以便它不会检查当前正在更新的组并让它只检查其他组以查看是否存在匹配。

有人可以帮忙吗?我确定有一种简单的方法可以做到这一点。似乎无法弄明白......

1 个答案:

答案 0 :(得分:0)

它可以很简单,只需将当前更新的组传递给函数,并在过滤器中忽略它。

代码应该是:

function ifGroupExists(groupName_filter, groupName_current) {
 var match;
 match = $scope.groups.filter(function (item) { 
   return (angular.lowercase(item.name) === angular.lowercase(groupName_filter) &&
      angular.lowercase(item.name) !== angular.lowercase(groupName_current));
 });

  return (match.length > 0); 
}

我希望你只在开发期间需要console.log,所以返回可以简化。

此外:如果您拥有groupName_current as $scope属性,则直接使用,无需通过。