Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 留下记录_Javascript_Angularjs - Fatal编程技术网

Javascript 留下记录

Javascript 留下记录,javascript,angularjs,Javascript,Angularjs,为什么我的以下代码会留下一条记录?如果我的Id=40,它应该从vm.events中删除所有3条记录 vm.events = [ { "studentId": "40", "studentName": "P Arjun", }, { "studentId": "40", "studentName":

为什么我的以下代码会留下一条记录?如果我的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);
                }
            }
        };

您的代码中有一个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

希望有帮助

@mukeshharma
splice()
更改原始数组。我尝试使用vm.stdListCope.pop()。。。但仍然有一个落后的可能重复的工作,但错误时,我添加另一个不同的studentId。例如{“studentId”:“41”,“studentName”:“P x Arjun”}对不起,我犯了个大错。我编辑了代码,现在应该可以了。让我知道!很高兴它有帮助!我还编辑了代码以使用(var I=0;I