如何使用AngularJS在向数组推入值时检查唯一性?

13
  $scope.displayyears = [];
  $scope.Joinyear = function(display) {
    $scope.yeardisplay = display;       
    $scope.yeardisp = $scope.displayyears.push($scope.yeardisplay);
    $scope.displayyearss = uniq($scope.yeardisp)
  }

它会抛出"uniq未定义"这样的错误,如何检查唯一性?


可能是如何在AngularJS中防止数组推入重复项的重复问题。 - Dave DuPlantis
1个回答

24

在将年份显示添加到数组之前,请尝试检查该显示是否已经存在于数组中

$scope.displayyears = [];
$scope.Joinyear=function(display){
     $scope.yeardisplay=display;        
     if ($scope.displayyears.indexOf(display) == -1) {
         $scope.displayyears.push(display);
     }
}

欢迎您 :) 您可以勾选复选框(在回答的投票下方)将问题标记为“已回答”。这将为其他寻找未回答问题的读者节省时间,并作为对撰写答案的人的“谢意”(无需在此网站上评论“谢谢您”)。 - Iftah
这行代码 '$scope.yeardisplay=display; ' 是必要的吗?只是好奇。 - GMan
绝对不必要,我不知道它是干什么用的。我猜它会在他的页面上显示出来。我只是将push+uniq组合修改为有效的js代码,其他部分保持不变。 - Iftah
请注意,由于IE8及以下版本不支持“indexOf”,因此此代码无法在这些浏览器中运行。 - b2238488
@b2238488 你说得对,谢谢。对于旧版浏览器,可以使用jQuery的inArray来实现相同的功能:https://api.jquery.com/jQuery.inArray/,但是Angular.js也不支持IE8,所以我认为在一个Angular.js问题中使用indexOf是安全的。 - Iftah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接