2017-10-03 17 views
1

オブジェクトがあり、特定のキーに一致するもの以外のすべての値を削除したい。JavaScript:オブジェクトから1つのキー以外をすべて削除する

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

をそれとも私が反復することもできます:たとえば、私はこれを行うことができます

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

をしかし、より良い方法がある場合、私は思ったんだけど。一時変数を作成してオブジェクト全体を反復処理することは不要です。私の最初の試みでした:

obj = { 
    key: obj[key] 
} 

しかし、それはkeyのキーを持つオブジェクトが生じました。

+3

てみ '[キー]:OBJ [キー]'。ここではリテラルプロパティではなく、計算されたプロパティが必要です。 – Xufox

+1

@saniales thats私が最初に試したことはうまくいかず、動作しませんでした。質問の最後を読んで – ewok

+0

は変数ですか? – gurvinder372

答えて

0

実際には、一時変数を使用せずに記述した内容を達成できます。 OBJ [キー]:

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

あなただけの[キー]で新しいオブジェクトを作成することができます。

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));

関連する問題