2016-11-21 83 views
3

我有一个JS对象这样的嵌套属性:删除以JavaScript对象

var tenants = { 
    'first': { 
     'name': 'first', 
     'expired': 1 
    }, 
    'second': { 
     'name': 'second' 
    } 
} 

而且我想删除租户的“第一”的“过期”的财产,我应该只是做到这一点?

delete tenants['first']['expired']; 

注:这个问题比这个问题更具体:How do I remove a property from a JavaScript object?,在我的问题集中在“套”的一部分。

+1

简短的回答:是的。更多信息:http://stackoverflow.com/questions/208105/how-to-remove-a-property-from-a-javascript-object –

回答

4

是的。这将工作。

delete tenants['first']['expired'];delete tenants.first.expired;

如果仅将其删除,因为你想从JSON.stringify()排除它,你也可以只将其设置为undefined,像tenants['first']['expired'] = undefined;

2

如果你想删除的属性存储在一个字符串,你可以使用此功能

function deletePropertyPath (obj, path) { 

    if (!obj || !path) { 
    return; 
    } 

    if (typeof path === 'string') { 
    path = path.split('.'); 
    } 

    for (var i = 0; i < path.length - 1; i++) { 

    obj = obj[path[i]]; 

    if (typeof obj === 'undefined') { 
     return; 
    } 
    } 

    delete obj[path.pop()]; 
}; 

使用示例

var tenants = { 
    'first': { 
     'name': 'first', 
     'expired': 1 
    }, 
    'second': { 
     'name': 'second' 
    } 
} 

var property = 'first.expired';  
deletePropertyPath(tenants, property);