如何删除 javascript 中的嵌套属性

how to delete nested properties in javascript

如何删除 javascript 中的嵌套属性。

我在下面有示例代码,其中包含嵌套对象,并希望删除特定的嵌套对象,条件是我在下面添加了条件。 如何根据条件删除整个对象?

var tenants = [{
    'first': {
        'name': 'first',
        'expired': 1
    },
    'second': []
},{
'first': {
        'name': 'second',
        'expired': 2
    },
    'second': [
        'name': 'third'
    ]
},{
'first': {
        'name': 'third',
        'expired': 3
    },
    'second': [
        'name': 'third'
    ]
},
]
               tenants.forEach((item)  => {
                        if(item.second.length == 0) {
                            console.log('record found..');                            
                            delete item
                        }   
                        else {
                          Data = item;
                        }                     
               });

我们怎样才能达到预期的效果如下:

var tenants = [{
'first': {
        'name': 'second',
        'expired': 2
    },
    'second': [
        'name': 'third'
    ]
},{
'first': {
        'name': 'third',
        'expired': 3
    },
    'second': [
        'name': 'third'
    ]
},
]

根据您的情况

,您可以将 filter 用于此目的

但是你在 second 中有一个语法错误 属性 你不能在数组中保存键值对所以我把它改为一个对象数组

'second': [ // old one
    'name': 'third'
]

'second': [{ // new one
    'name': 'third'
}]

var tenants = [{
  'first': {
    'name': 'first',
    'expired': 1
  },
  'second': []
}, {
  'first': {
    'name': 'second',
    'expired': 2
  },
  'second': [{
    'name': 'third'
  }]
}, {
  'first': {
    'name': 'third',
    'expired': 3
  },
  'second': [{
    'name': 'third'
  }]
}, ];

let filteredTenants = tenants.filter(item => item.second.length)
console.log(filteredTenants)

我假设您正在使用 .length 来检查您的 second 是数组的条件。

var tenants = [{
    'first': {
        'name': 'first',
        'expired': 1
    },
    'second': []
},{
'first': {
        'name': 'second',
        'expired': 2
    },
    'second': [
        'name', 'third'
    ]
},{
'first': {
        'name': 'third',
        'expired': 3
    },
    'second': [
        'name', 'third'
    ]
}
]

var index_to_delete = tenants.findIndex(function(item){
  return item.second.length == 0;
});

tenants.splice(index_to_delete,1);

console.log(tenants);

首先你必须更正数组。

var tenants = [{
    'first': {
        'name': 'first',
        'expired': 1
    },
    'second': []
},{
'first': {
        'name': 'second',
        'expired': 2
    },
    'second': [
        {'name': 'third'}
    ]
},{
'first': {
        'name': 'third',
        'expired': 3
    },
    'second': [
        {'name': 'third'}
    ]
}
]

然后只需使用 array.splice 从数组中删除项目。

tenants.forEach((item,index)  => {
      if(item.second.length == 0) {
           console.log('record found..');                            
           tenants.splice(index,1)
      }   
      else {
         Data = item;
      }                     
});