2016-04-12 15 views
4

私はオブジェクトがあります。指定されたキー以外のオブジェクトからすべての要素を削除しますか?

"languages": { 
    "en":["au", "uk"], 
    "de":["de"], 
    .... 
} 

私は指定されたキー以外のすべてを削除することができますどのように、私は「en」と指定した場合、私はちょうど「EN」が含まれるオブジェクトをしたい:[「AU」、「英国」 ]

+0

だけで抽出されたキーと値を含む新しいものを作成しますか?任意の基準に基づいてオブジェクトキーを拒否する何百万ものJSライブラリを使用しますか? –

+0

'' en''の*を除くすべてのキー*を削除したいですか? –

答えて

9

単に、指定したフィールドで新しいオブジェクトを作成することができます。

var key = 'en'; 

var o = { 
    "languages": { 
     "en": ["au", "uk"], 
     "de": ["de"] 
    } 
} 

var res = {} 

res[key] = o.languages[key]; 
+1

誰が投票したか分からないが、私は受け入れるだろう。 – panthro

+3

人は実際の質問に対する回答ではなく、回避策であるため投票が失敗する可能性があります。ここに着陸する人は、この独特なケースの回避策ではなく、タイトルごとに答えを探している可能性が高いです。 – Sandwich

+0

これは理想的なソリューションではありません。どうして?元の配列に 'key'が存在しない場合は、キーと未定義の値で新しい配列エントリを作成します。これは望ましくない可能性があります。 – pjb

6

deleteに不要なプロパティを試してみて、

var obj = { "languages": { "en":["au", "uk"],"de":["de"] }}; 

Object.keys(obj.languages).forEach(function(itm){ 
    if(itm != "en") delete object.languages[itm]; 
}); 
3

deleteを使用して、単純なループはそれを行います。

var key = 'en'; 
for (var k in obj.languages) { 
    if (obj.languages.hasOwnProperty(k) && k != key) { 
     delete obj.languages[k]; 
    } 
} 
+0

if文で 'key' varを使うべきでしょうか? – Simon

0

(Rajaprabhuの答えから精製)「どのように私は指定されたキー以外のすべてのキーを削除しますか」の元の質問のための一般的な解決策は:

validKeys = [ 'a', 'b', 'c' ]; 
userInput = { "a":1, "b":2, "c":3, "d":4, "e":5 } 

Object.keys(userInput).forEach((key) => validKeys.includes(key) || delete userInput[key]); 
関連する問題