我有点问题。 我有一个显示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) {
});
}
这没关系, 但是当我取消选中复选框时,我遇到了问题,因为如果我检查这个顺序 首先点击“A”,第二个“C”和第三个“D”我按照这个推送我的数组
myArray = ["A", "C", "D"]
如果我以相反的顺序取消选中, 首先取消选中“D”
myArray = ["A", "C"]
第二次取消选中“C”
myArray = ["A"]
和最后一个“A”
myArray = []
这是完美的,但如果我在取消选中复选框时更改订单
myArray = ["A", "C", "D"]
如果我首先取消选中“C”,我的数组将删除“C”和“D”,我得到这个
myArray = ["A"]
如果我第一次取消选中“A”,我的数组会删除“A”,“C”和“D”,我得到这个
myArray = []
如何删除唯一未经检查的项目?
答案 0 :(得分:5)
您需要指定Array#splice
的 "error":{
"metadata":[
"error-class","org.apache.solr.common.SolrException",
"root-error-class","org.apache.solr.common.SolrException"],
"msg":"Can't determine a Sort Order (asc or desc) in sort spec 'if(eq(custom_s_doctor_location_key, \"advanced imaging center - lake ridge-landing\"),1,0) desc', pos=35",
"code":400}})
,因为不会删除所有以实际索引开头的元素。
参数
deleteCount
可选一个整数,指示要删除的旧数组元素的数量。如果
deleteCount
为0,则不会删除任何元素。在这种情况下,您应该至少指定一个新元素。如果deleteCount
大于从deleteCount
开始的数组中剩余的元素数,则将删除通过数组末尾的所有元素。如果省略
start
,或者其值大于deleteCount
,则将删除通过数组末尾以array.length - start
索引开头的所有元素。< / p>
start
答案 1 :(得分:1)
您的问题是,您只使用index
拨打 .splice()
method ,您需要将1
指定为第二个参数,即项目数要拼接,deleteCount
可选参数。
var index = $scope.savesGraphUserDetail.indexOf(value);
$scope.savesGraphUserDetail.splice(index, 1);
否则将删除以数组末尾的start index开头的所有元素,这就是为什么在第二次尝试中删除"C"
和"D"
的原因。
<强>文档强>
如果您查看 .splice()
MDN specification ,可以看到: