2017-10-03 3 views
1

Ich habe ein Objekt, und ich möchte alle Werte außer dem, der einen bestimmten Schlüssel entspricht entfernen. Zum Beispiel könnte ich dies tun:JavaScript: Entfernen Sie alle außer 1 Schlüssel aus einem Objekt

function remove(obj, key) { 
    var value = obj[key] 
    var ret = {} 
    ret[key] = obj[key] 
    obj = ret 
} 

Oder ich könnte iterieren:

for (var k in obj) { 
    if (k != key) { 
    delete obj[k] 
    } 
} 

Aber ich frage mich, ob es ein besserer Weg. Das Erstellen einer temporären Variablen und das Iterieren über das gesamte Objekt scheinen unnötig zu sein. Mein erster Versuch war:

obj = { 
    key: obj[key] 
} 

Aber das führte zu einem Objekt mit einem Schlüssel von key.

+3

Try '[key]: obj [key]'. Sie benötigen hier eine berechnete Eigenschaft und keine literale Eigenschaft. – Xufox

+1

@saniales das ist, was ich anfangs versuchte und es hat nicht funktioniert. Lesen Sie das Ende der Frage – ewok

+0

ist der Schlüssel eine Variable? – gurvinder372

Antwort

0

Sie können tatsächlich erreichen, was Sie beschrieben haben, ohne temporäre Variablen zu verwenden.

function remove(obj, key) { 
    return Object.assign({}, { [key] : obj[key]}); 
} 
0

Sie können einfach ein neues Objekt mit [key]: obj [key] erstellen.

var obj = { 
 
"a":1, 
 
"b":2 
 
}; 
 
var key = "a"; 
 

 
function filterByKey(object, key) { 
 
    return Object.create({[key]:obj[key]}); 
 
} 
 
function filterByKey2(object, key) { 
 
    return {[key]:obj[key]}; 
 
} 
 
console.log(filterByKey(obj, key)); 
 
console.log(filterByKey2(obj, key));

Verwandte Themen