拼接留下记录
splice leave record behind
为什么我的代码留下一条记录?如果我的 Id=40,它应该从 vm.events 中删除所有 3 条记录
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);
}
}
};
你的代码中有一个错误。
当它运行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。
这就是为什么您只剩下 1 个条目的原因。
发生这种情况是因为您在浏览数组时正在拼接数组。因此,删除行时不应增加索引。下面是使用一段时间的代码的更正版本:
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);
}
}
};
希望对您有所帮助!
相关文章:
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- AngularJs对所有页面中的所有记录进行排序
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- window.location替换并传递URL历史记录条目中的变量
- Javascript历史记录转换为php行
- JavaScript,PHP-用JavaScript将多个数据库记录发送到变量或表
- 猫鼬在特定记录中查找嵌套记录
- 浏览器何时记录历史记录
- 将一个表的id与另一个表中的user_id进行匹配,以获取mysql中的记录
- 更新成员数据模型中的记录列表
- 如何使用提交按钮搜索表中的记录
- 正在OrientDB中嵌入函数中的记录
- Angularjs拼接成环状
- 拼接未删除某些字符
- 使用Rails 3中的AJAX删除记录
- 将数组的拼接分配给自身时,Javascript控制台打印不起作用
- 用javascript记录传递给回调的参数的约定是什么
- 在页面上记录数据并实现pushstate()的最佳方式
- 拼接留下记录
- 角度拼接函数删除另一条记录而不是实际选择的记录