2017-06-01 5 views
0

修正方法:コード2出力パスワードは同じですか?ルーピング固有の値 - nodejs

なぜコード2のパスワードが同じですか?

コード1

var arr = [ 
    { email: '', role: 'normal', password: '' }, 
    { email: '', role: 'normal', password: '' }, 
    { email: '', role: 'normal', password: '' }, 
    { email: '', role: 'normal', password: '' }, 
    { email: '', role: 'normal', password: '' }, 
    { email: '', role: 'normal', password: '' } 
] 

arr.forEach(o => { o.password = Math.random() }) 

output: [{ email: '', role: 'normal', password: 0.16326031488429638 }, 
{ email: '', role: 'normal', password: 0.4941354999549721 }, 
{ email: '', role: 'normal', password: 0.6802056630925 }, 
{ email: '', role: 'normal', password: 0.5038916232454755 }, 
{ email: '', role: 'normal', password: 0.5232000715886489 }, 
{ email: '', role: 'normal', password: 0.1599782533612224 }] 

コード2

var obj = { 
    email: '1', 
    role: 'normal', 
    password: '' 
}, array = [] 

for (let i = 0; i < 6; i++) { 
    array.push(function() { 
     obj.password = Math.random() 
     return obj 
    }) 
} 

出力

[{メール: '1'、役割:「正常'、password:0.4311454570811686} 、

{メール: '1'、役割: '正常'、パスワード:0.4311454570811686}、

{メール: '1'、役割: '正常'、パスワード:0.4311454570811686}、

{電子メール: '1'、役割: '標準'、パスワード:0.4311454570811686}、

{Eメール: '1'、役割: '標準'、パスワード:0.4311454570811686}、

{Eメール: '1'、ロール:「通常」、パスワード:0.4311454570811686}

+0

この質問を読みやすいようにしてください。あなたが何を求めているのかは分かりません。 –

+0

待機中................... – ZERO

答えて

0

ここでの問題は、同じオブジェクトを何度も何度もアレイに押し込むことです。技術的には、いくつかの参考文献を持つオブジェクトが1つだけになります。代わりにこれを試してください:

for (let i = 0; i < 6; i++) { 
    array.push(Object.assign({}, obj, {password: Math.random()})); 
} 

オブジェクトを使用してオブジェクトを "複製"します。

+0

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

+0

あなたは私にこれについてのいくつかのURLを教えてくれますか? – ZERO

+0

もちろん、この[MDN docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)は素晴らしいです。 –

関連する問題