比较ng-if中的两个数组

时间:2017-12-05 04:32:23

标签: angularjs

我在一个类中有数组,我必须比较同一个类的2个不同对象中的数组是否相同。目前,我这样做,

<div class="col-md-4">{{ctrl.Obj1.arr1}}
  <span ng-if="ctrl.Obj2 != null && ctrl.Obj1.arr1 != ctrl.Obj2.arr1"
      class="glyphicon glyphicon-alert" style="margin-left: 6px;
     font-size: small; color: palevioletred">
  </span>
</div>

但这是一种不正确的比较方式,因为它会产生不同的值。我的数组格式为:["string1","string2","string3"]

这样做的正确方法是什么?

编辑:我的问题不同,因为我在AngularJS中询问如何实现这一点。

2 个答案:

答案 0 :(得分:1)

不是在模板中进行这种比较,而是应该有一个在比较后返回布尔值的函数,然后将其绑定到模板

ng-if="compareArrays()"

并在控制器中

$scope.compareArrays = function(){
var result = $scope.array1.length == $scope.array2.length && $scope.array1.every(function(element, index) {
    return element === $scope.array2[index]; 
});
 return result ;
}

答案 1 :(得分:0)

您可以使用angular.equals比较两个数组。 支持值类型,正则表达式,数组和对象。

这是您的用例:

<span ng-if="ctrl.Obj2 != null && !angular.equals(ctrl.Obj1.arr1, ctrl.Obj2.arr1)
     class="glyphicon glyphicon-alert" style="margin-left: 6px;
     font-size: small; color: palevioletred">
</span>

请不要忘记将以下内容添加到您的主应用程序控制器中: $scope.angular = angular;