Javascript 检查重复项是否正常工作的函数

Javascript 检查重复项是否正常工作的函数,javascript,html,angularjs,underscore.js,Javascript,Html,Angularjs,Underscore.js,我有一个迷你应用程序,允许用户输入汽车的品牌和型号,然后将其添加到下表中。我添加了一个函数,该函数将检查是否存在重复项,并在表中已有重复项时发出警报。如果没有匹配的现有记录,它将把新的“make”和“model”推送到表中。我将代码改为使用u.isEqual,而不是以前的代码,现在每次运行它时,它都会在警报中被捕获。有人知道发生了什么吗 <div>Make: <input type="text" ng-model="make"></div> <div

我有一个迷你应用程序,允许用户输入汽车的品牌和型号,然后将其添加到下表中。我添加了一个函数,该函数将检查是否存在重复项,并在表中已有重复项时发出警报。如果没有匹配的现有记录,它将把新的“make”和“model”推送到表中。我将代码改为使用u.isEqual,而不是以前的代码,现在每次运行它时,它都会在警报中被捕获。有人知道发生了什么吗

 <div>Make: <input type="text" ng-model="make"></div>
 <div>Model:<input type="text" ng-model="model"></div>
 <button ng-click="add()">Add</button>

最后使用了一个更简单的选项,并改用angular.equals。isEqual太痛苦了,无法正确实施。谢谢你的帮助

function hasDuplicates(newCar){
     var returnVal = false;
     angular.forEach($scope.cars, function(car, key){
        if (angular.equals(car, newCar))
        {
          returnVal = true;
        }
      });
     return returnVal;
  };

因为你只是在检查“isEqual(汽车,新车);”但不要对结果做任何事。你应该做类似于isEqual=isEqual | | | |的事情并返回结果您也没有调用
hasdeplicates
函数,因此
if(hasdeplicates)
将始终为真。@hughes谢谢!
 var carsApp = angular.module('carsApp', []);

carsApp.controller('carController', function ($scope){

   $scope.cars = [];

  $scope.add = function () {

      var newCar = {
        make: $scope.make,
        model: $scope.model
      };

      function hasDuplicates(){
        angular.forEach($scope.cars, function(car, key){
          _.isEqual(car, newCar);
        });
      }

      if (hasDuplicates) {
          alert("Car already exists");
          } else {  
           $scope.cars.push(newCar);
          }
      }      

      $scope.rowClick = function(car){
          $scope.make= car.make;
          $scope.model= car.model;
      };

        $scope.make = null;
        $scope.model = null;

  });
function hasDuplicates(newCar){
     var returnVal = false;
     angular.forEach($scope.cars, function(car, key){
        if (angular.equals(car, newCar))
        {
          returnVal = true;
        }
      });
     return returnVal;
  };