2016-11-21 82 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);