有个小伙伴问我一个问题,解决了倒是,不知道为什么会出现

 $(function(){        var arr1 = [
            {name: 'leo1', securityId: '1'},
            {name: 'leo2', securityId: '2'},
            {name: 'leo3', securityId: '3'},
            {name: 'leo4', securityId: '4'}
        ];        var id = '1';        function getId(arr, id) {            
        var len = arr.length;            for(var i = 0; i < len; i++) {                
        if (id == arr[i].securityId) {
                    arr.splice(i,1);
                }
            }            return arr;
        }
        getId(arr1, id);        console.log(getId(arr1, id));            
    })

我的解决办法是在for循环里面再次循环对象

      function getId(arr, id) {            var len = arr.length;            
      for(var i = 0; i < len; i++) {                for(var j in arr[i]){                   
       if(arr[i][j]==id){
                      arr.splice(i,1)
                    }
                }
            }    
            return arr;
        }

想知道为什么会出现类型报错


慕雪6442864
浏览 394回答 1
1回答

POPMUISE

for循环里边,len=4,但是i=0的时候,arr被删除了一个元素,这个时候arr的长度变成3,而for循环最后还是会遍历到arr[3],但是这个时候arr只有三个元素,arr[3]是第四个元素,不存在任何属性,所以报错了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript