$(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;
}
想知道为什么会出现类型报错
for循环里边,len=4,但是i=0的时候,arr被删除了一个元素,这个时候arr的长度变成3,而for循环最后还是会遍历到arr[3],但是这个时候arr只有三个元素,arr[3]是第四个元素,不存在任何属性,所以报错了