gpt4 book ai didi

javascript - 如果数组值已经存在,则删除 JavaScript

转载 作者:行者123 更新时间:2023-12-02 15:22:21 25 4
gpt4 key购买 nike

我有一个用 ng-repeat 显示的值数组。当我单击其中一个时,我将该值添加到另一个数组中。如果已经存在,我将其删除。在这里效果很好。但我有一个按钮可以在第二个按钮中推送所有数组。它正在工作,但即使值已经存在,我也可以无限次推送整个数组。当然,如果我检查一个或两个值,然后按“全选”,它必须选择所有值以及已经通过单个选择选择的值。顺便说一句,这是带有 jsfiddle 的代码:

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
$scope.all_titles = [
"Title 1",
"Title 2",
"Title 3",
"Title 4"
];

$scope.selection=[];

$scope.getSelectedItem = function getSelectedItems(title) {
var idx = $scope.selection.indexOf(title);
// is currently selected
if (idx > -1) {
$scope.selection.splice(idx, 1);
}
// is newly selected
else {
if(Array.isArray(title)) {
for(var i=0;i<title.length;i++) {
$scope.selection.push(title[i]);
}
} else {
$scope.selection.push(title);
}
}
};
}

<div ng-controller="MyCtrl">
<div>
<button data-ng-click="getSelectedItem(all_titles)">
Select all
</button>
</div>
<div ng-repeat="title in all_titles">
<a ng-click="getSelectedItem(title)">{{title}}</a>
</div>

<hr>
<div>
{{selection}}
</div>
</div>

http://jsfiddle.net/HB7LU/20342/

最佳答案

我不太清楚你的情况。

如果您希望全选按钮表现得像所有链接都被点击,那么这就是您的解决方案:

$scope.getSelectedItem = function getSelectedItems(title) {
if(Array.isArray(title)) {
for(var i=0;i<title.length;i++) {
$scope.pushIt(title[i]);
}
} else {
$scope.pushIt(title);
}

};

$scope.pushIt = function pushIt(title) {
var idx = $scope.selection.indexOf(title);
// remove if already in array
if (idx > -1) {
$scope.selection.splice(idx, 1);
} else {
$scope.selection.push(title);
}
};

如果您希望全选按钮添加其余项目,那么这就是您的解决方案:

$scope.getSelectedItem = function getSelectedItems(title) {

if (Array.isArray(title)) {
for (var i = 0; i < title.length; i++) {
var idx = $scope.selection.indexOf(title[i]);
// don't add if already in the array
if (idx == -1) {
$scope.selection.push(title[i]);
}
}
} else {
var idx = $scope.selection.indexOf(title);
// is currently selected
if (idx > -1) {
$scope.selection.splice(idx, 1);
} else {
$scope.selection.push(title);
}
}

};

关于javascript - 如果数组值已经存在,则删除 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33941613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com