Art*_*ter 2 javascript arrays string checkbox angularjs
我有一点问题.我有一个显示div的复选框.我可以从6个不同的复选框中选择,以选择我想要显示的div.
当检查复选框时,我显示div并发送到服务器检查的div名称.
$scope.savesGraphUserDetail = [];
$scope.addRemoveUserChart = function(checked, value) {
if (checked) {
$scope.savesGraphUserDetail.push(value);
var config = { headers: { "Content-Type": "application/x-www-form-urlencoded", "X-HTTP-Method-Override": "PUT" } };
var data = {graphsConfig: $scope.savesGraphUserDetail};
$http
.post(serviceBase + "blabla", data, config)
.success(function(data, status, headers, config) {
})
.error(function(data, status, header, config) {
});
}else {
var index = $scope.savesGraphUserDetail.indexOf(value);
$scope.savesGraphUserDetail.splice(index);
var config = { headers: { "Content-Type": "application/x-www-form-urlencoded", "X-HTTP-Method-Override": "PUT" } };
var data = {graphsConfig: $scope.savesGraphUserDetail};
$http
.post(serviceBase + "blabla", data, config)
.success(function(data, status, headers, config) {
})
.error(function(data, status, header, config) {
});
}
Run Code Online (Sandbox Code Playgroud)
这没关系,但是当我取消选中复选框时,我遇到了问题,因为如果我检查这个顺序,首先点击"A",第二个"C"和第三个"D",我就像这样推入我的数组
myArray = ["A", "C", "D"]
Run Code Online (Sandbox Code Playgroud)
如果我以相反的顺序取消选中,首先取消选中"D"
myArray = ["A", "C"]
Run Code Online (Sandbox Code Playgroud)
第二个取消选中"C"
myArray = ["A"]
Run Code Online (Sandbox Code Playgroud)
并持续"A"
myArray = []
Run Code Online (Sandbox Code Playgroud)
这是完美的,但如果我在取消选中复选框时更改顺序
myArray = ["A", "C", "D"]
Run Code Online (Sandbox Code Playgroud)
如果我首先取消选中"C",我的数组将删除"C"和"D",我得到了这个
myArray = ["A"]
Run Code Online (Sandbox Code Playgroud)
如果我首先取消选中"A",我的数组会删除"A","C"和"D",我会得到这个
myArray = []
Run Code Online (Sandbox Code Playgroud)
如何删除唯一未选中的项目?
您需要指定deleteCountof Array#splice,因为不会删除以实际索引开头的所有元素.
参数
deleteCount可选的一个整数,指示要删除的旧数组元素的数量.如果
deleteCount为0,则不删除任何元素.在这种情况下,您应该至少指定一个新元素.如果deleteCount大于从数组开始处剩余的元素数,start则将删除通过数组末尾的所有元素.如果
deleteCount省略,或者其值大于array.length - start,则将start删除以数组末尾的index on 开头的所有元素.
$scope.savesGraphUserDetail.splice(index, 1);
// ^
Run Code Online (Sandbox Code Playgroud)