2016-11-21 16 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()から除外したかったので、削除したいプロパティが文字列に格納されている場合

あなたはまた、単にtenants['first']['expired'] = undefined;

2

のように、undefinedに設定することができ、それだけを削除する場合は、使用することができますこの機能

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); 
関連する問題