【发布时间】:2014-12-01 09:19:30
【问题描述】:
早上好,
我想将新项目推送到数组中(我们可以这样做),但在推送之前检查重复项以防止在数组中重复项目。
我已经尝试过这个 example,但我没有成功地让它与我们的代码一起工作。
如果有人知道更好的解决方案或知道我们哪里出了问题,请尽快告诉我们。 谢谢。
** JS **
$scope.Products = $scope.$storage.Products == undefined ? [] : $scope.$storage.Products;
$scope.logItem = function($index, brandName, partNumber, productName, amount) {
$scope.newItem = {
Brand: brandName,
Part: partNumber,
Product: productName,
Amount: amount
};
var duplicateItem = $scope.Products.reduce(function(previous, i) {
if ($scope.newItem === i) return true;
return previous
}, false);
if (duplicateItem) {
alert("Already Logged");
} else {
alert("Item Logged");
$scope.Products.push($scope.newItem);
$scope.$storage.Products = $scope.Products;
}
}
** 修复 **
$scope.Products = $scope.$storage.Products == undefined ? [] : $scope.$storage.Products;
$scope.logItem = function($index, brandName, partNumber, productName, amount) {
$scope.newItem = {
Brand: brandName,
Part: partNumber,
Product: productName,
Amount: amount
};
var isDuplicate = false;
$scope.Products.forEach(function(element) {
if (JSON.stringify(element) === JSON.stringify($scope.newItem)) {
isDuplicate = true;
return false;
}
});
if (!isDuplicate) {
alert("Item Logged");
$scope.Products.push($scope.newItem);
$scope.$storage.Products = $scope.Products;
} else {
alert("Already Logged");
};
}
【问题讨论】:
标签: arrays json angularjs duplicate-removal