2016-09-07 1 views
0

私はこのような埋め込みオブジェクトを持つオブジェクトを持っている:抽出埋め込まれたオブジェクト要素

var object = { 'A' : 
        {'cc' : { 'cc data 1' : 'data 1 cc for A', 
          'cc data 2' : 'data 2 cc for A' 
          }, 
        'dd' : 'data dd for A' 
        }, 
       'B' : 
        {'cc' : { 'cc data 1' : 'data 1 cc for B' , 
          'cc data 2' : 'data 2 cc for B' 
          }, 
        'dd' : 'data dd for B' 
       } 
      }; 

私はちょうど「CC」データのための別のオブジェクトを作成し、「D-D」のデータをスキップしたいです。このコードブロックは、私が何をしようとしているかを示しています:

var newObj = {}; 
for (key in object) { 
    newObj[key]    = {}     ; 
    newObj[key]['cc']  = {}     ; 
    newObj[key]['cc']  = object[key]['cc']  ; 
} 
console.log(util.inspect(newObj)); 

もっと良い方法がありますか?私はピックを使用すると考えましたが、どのように決定できませんでした私は、ワイルドカードを使用して、このようなソリューションが考えられると考えています。

_.pick(object[ * ], 'cc') // does not work 

ありがとうありがとうございます。

+0

あり、これを行うには多くの方法があるが、良い方向に尋ねることはかなり独断的です。 – Xotic750

+0

データの最後の編集でも、要求/可能性が大幅に変更されます。データはオリジナルのコピーである必要がありますか、または共有された参照は大丈夫ですか?これは静的な構造ですか、それともあなたが開示していない他の力学があるのでしょうか? – Xotic750

答えて

2

あなたは何をやっているObject.keys()reduce()

var object = { 
 
    'A': { 
 
    'cc': 'Data cc for A', 
 
    'dd': 'Data dd for A' 
 
    }, 
 
    'B': { 
 
    'cc': 'Data cc for B', 
 
    'dd': 'Data dd for B' 
 
    } 
 
}; 
 

 
var newObj = Object.keys(object).reduce(function(r, e) { 
 
    r[e] = {cc: object[e].cc}; 
 
    return r; 
 
}, {}); 
 

 
console.log(newObj)

+0

興味深い - 私は第3レベルを追加し、あなたのソリューションを試しました - それは第3レベルでも機能します。 – edwardsmarkf

0

を使用することができ、それが取得するつもりだとして、あなたは中間オブジェクトを作成しないことにより、少しそれを短縮することができ程度として効率的です。

for (var key in object) { 
    newObj[key] = { 
    cc: object[key].cc 
    } 
} 
0

ES6での別の可能性。より良い?まあ、それは意見を含め、多くのことに依存しています。

const javascriptObject = { 
 
    'A': { 
 
    'cc': 'Data cc for A', 
 
    'dd': 'Data dd for A' 
 
    }, 
 
    'B': { 
 
    'cc': 'Data cc for B', 
 
    'dd': 'Data dd for B' 
 
    } 
 
}; 
 
const myNewObject = {}; 
 
for (let key of Object.keys(javascriptObject)) { 
 
    myNewObject[key] = Object.assign({}, javascriptObject[key]); 
 
    delete myNewObject[key].dd; 
 
} 
 
console.log(myNewObject);

関連する問題