如何删除对象数组中的对象:jquery

How to remove object in object array : jquery?

本文关键字:对象 数组 jquery 何删除 删除      更新时间:2023-09-26

我很困惑我试图使用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' 的对象,但我得到了这个error 未捕获的类型错误:对象 # 没有方法"拼接"

更新我需要类似的东西: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;
        }
    }
});