2017-10-22 7 views
2

内のオブジェクトのマッチングからオブジェクトを宣言することができます私はこのはどのように私はES6

var data = {firstName, lastName, email, password} = req.body; 

のような、可能な場合、それを短くするためにそれをやりたい

let {firstName, lastName, email, password} = req.body; 

var data = {firstName, lastName, email, password}; 

自分のアプリケーションでこのコードを持っていますこれは可能ですか?

+0

あなたはこれがES6メーリングリストで議論されており、そのリスト上の著名の見せかけのコンセンサスがあることが、この要求は、少なくともダースを示したという事実にもかかわらず、ある機能 –

+1

を作ることができますスタックオーバーフローでは、新しい構文を導入するのに十分な要件ではありません。だから、あなたの2つのラインの解決策は、現時点では、ここでのやり方が好まれる方法です。 –

答えて

1

あなたは手動でES6 +を使用している場合は、次のようにオブジェクトの広がりの構文を使用することができます。質問にアプローチを使用したり、ターゲット

const body = {firstName: 1, lastName: 2,email: 3, password: 4}; 
 

 
let data = {}; 
 

 
({ 
 
    firstName: data.firstName, 
 
    lasName: data.lastName, 
 
    email: data.email, 
 
    password: data.password 
 
} = body); 
 

 
console.log(data);

+3

なぜ '{}'の代わりに 'new Object'を使うのですか?そして、これは実際に何を達成していますか? OPが質問する唯一の方法は、 'req.body'にあるものをフィルタリングしたいのかどうかということです - 既にオブジェクトであり、再び同じオブジェクトにするためには何も破壊する必要がないからです。 'lasName'のtypo、コードの第2部分。構造化を使用してオブジェクトを通常どおりに作成する場合と比べて、コードが少なくなっていますか? (答え:そうではありません)OPはすでに2つの単純なコード行でそれを行います。ここに掲載されたすべての "ソリューション"は、OPが既に得ているものより複雑です。 –

+0

@Mörre 'new Object'を使用する際に何が問題になりますか? – guest271314

+0

@Mörre_ "ここに掲載されている"すべての "ソリューション"は、OPが既に得ているものよりも複雑です。 "_その文を回答として投稿することを検討しましたか? – guest271314

1

でオブジェクトへの割り当ての割り当てを設定することができます。あなたがいない場合は

const { ...data } = req.body; 

、手動でオブジェクトを作成することができます。

const { firstName, lastName, email, password } = req.body; 
const data = { 
    firstName: firstName, 
    lastName: lastName, 
    email: email, 
    password: 
}; 
+1

実際、これらは両方ともES6ソリューションです。 – nadavvadan

+0

はどちらもES6で動作しますが、正式なES6環境では動作しません。 –

+0

どちらもES5で動作しません。 – nadavvadan

1

lodashにアクセスできる場合は、lodashで提供されるpickメソッドを使用できます。

var data = _.pick(req.body, ['firstName', 'lastName', 'email', 'password']);