我在一个类中有数组,我必须比较同一个类的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中询问如何实现这一点。
答案 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;