我很困惑我试图使用jquery
删除对象数组中的对象这里是我的代码,jsFiddle
var x = new Array() ;
var y = {} ;
y.name = 'myName' ;
y.age = 28 ;
y.phone = 27895556 ;
y.info = [{name:'x' ,age:58} ,{name:'y' , age:15}]
x.push(y) ;
$.each(x , function(index,value) {
$.each(value.info , function(i,v){
if(v.name == 'x'){
this.splice(i,1) ;
}
});
});
我试图通过if
='x'告诉v.name
条件移除对象但是我得到了这个error
未捕获的TypeError:对象#没有方法'剪接'的
更新我需要y.info = [{name:'x' ,age:58} ,{name:'y' , age:15}]
之后的splice()
知道我做错了什么谢谢
答案 0 :(得分:5)
如果您只是想删除包含值{name: 'x'}
的内部数组元素,那么您想要splice
的数组是外部循环的value.info
:
$.each(x, function(index, value) {
$.each(value.info, function(i, v) {
if (v.name === 'x') {
value.info.splice(i, 1) ;
}
});
});
但是,此代码遇到的问题是,在使用$.each
进行迭代时,不应修改数组的长度。这个替代代码修复了这个问题:
$.each(x, function(index, value) {
var info = value.info;
for (var i = 0; i < info.length; ) {
if (info[i].name === 'x') {
info.splice(i, 1);
} else {
++i;
}
}
});