如何在不重复元素的情况下将元素推送到数组?
how to push elements to an array without repeating non of them?
我有this issue here recorded on a video让你更容易理解。正如您所看到的,我从一个数组中选择一些元素并将这些元素推送到另一个名为 $scope.favoriteLeague = [];
的数组中,以便制作最喜欢的联赛列表,在该视频中我将元素推送任意多次我不希望这样,我希望能够只选择列表中的每个元素一次,如果用户尝试选择收藏夹数组中已经存在的元素,则显示一条消息。
我正在使用 lodash
和 angular
,这是代码:
$scope.favoriteLeague = [];
$scope.addToFavorites = function(league) {
$scope.favoriteLeague.push(league);
};
html
<ion-item ng-repeat="league in favoriteLeague">
{{league.name}}
</ion-item>
在推送之前检查数组是否包含联赛。
$scope.addToFavorites = function(league) {
$scope.favoriteLeague.indexOf(league) === -1 ? $scope.favoriteLeague.push(league) : void 0;
};
您应该检查它是否不在数组中。 @itcouldevenbeaboat 很接近,但应该是 === -1
而不是 !== -1
$scope.addToFavorites = function(league) {
if ($scope.favoriteLeague.indexOf(league) === -1){
$scope.favoriteLeague.push(league);
}
};
.indexOf()
方法可能正是您正在寻找的。将其包装在调用 addToFavorites
的代码周围(这样,如果该值已经存在,您甚至不会调用该函数):
if ($scope.favoriteLeague.indexOf(league) === -1) {
. . . your existing call to addToFavorites . . .
}
或者,如果您使用 jQuery,您可以使用 $.inArray()
方法来做同样的事情。
实际上我根据@itcouldevenbeaboat 的回答得到了自己的解决方案
$scope.addToFavorites = function(league) {
if ($scope.favoriteLeague.indexOf(league) === -1) {
$scope.favoriteLeague.push(league);
}else {
console.log('already exists!!!!!');
}
};
我有this issue here recorded on a video让你更容易理解。正如您所看到的,我从一个数组中选择一些元素并将这些元素推送到另一个名为 $scope.favoriteLeague = [];
的数组中,以便制作最喜欢的联赛列表,在该视频中我将元素推送任意多次我不希望这样,我希望能够只选择列表中的每个元素一次,如果用户尝试选择收藏夹数组中已经存在的元素,则显示一条消息。
我正在使用 lodash
和 angular
,这是代码:
$scope.favoriteLeague = [];
$scope.addToFavorites = function(league) {
$scope.favoriteLeague.push(league);
};
html
<ion-item ng-repeat="league in favoriteLeague">
{{league.name}}
</ion-item>
在推送之前检查数组是否包含联赛。
$scope.addToFavorites = function(league) {
$scope.favoriteLeague.indexOf(league) === -1 ? $scope.favoriteLeague.push(league) : void 0;
};
您应该检查它是否不在数组中。 @itcouldevenbeaboat 很接近,但应该是 === -1
而不是 !== -1
$scope.addToFavorites = function(league) {
if ($scope.favoriteLeague.indexOf(league) === -1){
$scope.favoriteLeague.push(league);
}
};
.indexOf()
方法可能正是您正在寻找的。将其包装在调用 addToFavorites
的代码周围(这样,如果该值已经存在,您甚至不会调用该函数):
if ($scope.favoriteLeague.indexOf(league) === -1) {
. . . your existing call to addToFavorites . . .
}
或者,如果您使用 jQuery,您可以使用 $.inArray()
方法来做同样的事情。
实际上我根据@itcouldevenbeaboat 的回答得到了自己的解决方案
$scope.addToFavorites = function(league) {
if ($scope.favoriteLeague.indexOf(league) === -1) {
$scope.favoriteLeague.push(league);
}else {
console.log('already exists!!!!!');
}
};