Javascript 留下记录
为什么我的以下代码会留下一条记录?如果我的Id=40,它应该从vm.events中删除所有3条记录Javascript 留下记录,javascript,angularjs,Javascript,Angularjs,为什么我的以下代码会留下一条记录?如果我的Id=40,它应该从vm.events中删除所有3条记录 vm.events = [ { "studentId": "40", "studentName": "P Arjun", }, { "studentId": "40", "studentName":
vm.events = [
{
"studentId": "40",
"studentName": "P Arjun",
},
{
"studentId": "40",
"studentName": "P Arjun",
},
{
"studentId": "40",
"studentName": "P Arjun",
}
];
vm.setSelectedStudent = function (Id) {
vm.stdListCope = angular.copy(vm.events);
for (var i in vm.stdListCope) {
if (vm.stdListCope[i]['studentId'] == Id) {
vm.stdListCope.splice(i, 1);
}
}
};
您的代码中有一个bug 当它为
i=0
运行时,vm.stdListCope.splice(0,1)代码>使用单个条目将数组切片到数组中
因此,在i=0
之后,vm.stdListCope
有[{“studentId”:“40”,“studentName”:“p Arjun”,}]
但是,当循环为i=1
或i=2
运行时,vm.stdListCope[i]['studentId']==Id
将不为真,因为没有与索引i=1
和i=2
对应的条目,因为它的长度为1
这就是为什么只剩下一个条目。这是因为您在浏览阵列时正在拼接阵列。因此,删除行时不应增加索引。以下是使用while修改的代码版本:
vm.events = [
{
"studentId": "40",
"studentName": "P Arjun",
},
{
"studentId": "40",
"studentName": "P Arjun",
},
{
"studentId": "40",
"studentName": "P Arjun",
}
];
vm.setSelectedStudent = function (Id) {
vm.stdListCope = angular.copy(vm.events);
for (var i = 0; i < list.length; i++) {
while (vm.stdListCope[i] != undefined && vm.stdListCope[i]['studentId'] == Id) {
vm.stdListCope.splice(i, 1);
}
}
};
vm.events=[
{
“学生ID”:“40”,
“学生姓名”:“P Arjun”,
},
{
“学生ID”:“40”,
“学生姓名”:“P Arjun”,
},
{
“学生ID”:“40”,
“学生姓名”:“P Arjun”,
}
];
vm.setSelectedStudent=函数(Id){
vm.stdListCope=angular.copy(vm.events);
对于(变量i=0;i
希望有帮助 @mukeshharmasplice()
更改原始数组。我尝试使用vm.stdListCope.pop()。。。但仍然有一个落后的可能重复的工作,但错误时,我添加另一个不同的studentId。例如{“studentId”:“41”,“studentName”:“P x Arjun”}对不起,我犯了个大错。我编辑了代码,现在应该可以了。让我知道!很高兴它有帮助!我还编辑了代码以使用(var I=0;I