我很困惑,我试图使用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
条件以 v.name
= 'x' 删除对象,但我收到此错误
未捕获类型错误:对象#没有方法“拼接”
更新 我需要这样的东西: y.info = [{name:'x' ,age:58} ,{name:'y' ,age:15}]
在 splice()
知道我做错了什么谢谢
最佳答案
如果您只是尝试删除包含值 {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;
}
}
});
关于javascript - 如何删除对象数组中的对象: jquery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11969495/