javascript – Informationen zum Erstellen einer Schleife zum Erstellen eines Arrays von Objekten und zum Hinzufügen zufälliger Werte
为情所困
为情所困 2017-06-05 11:13:16
0
1
627

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 } ]

当使用 for 创建一个 对象数组

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

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

output: [ { email: '1', role: 'normal', password: 0.4311454570811686 },
  { email: '1', role: 'normal', password: 0.4311454570811686 },
  { email: '1', role: 'normal', password: 0.4311454570811686 },
  { email: '1', role: 'normal', password: 0.4311454570811686 },
  { email: '1', role: 'normal', password: 0.4311454570811686 },
  { email: '1', role: 'normal', password: 0.4311454570811686 } ]

Mein Problem ist, dass im zweiten mit for generierten Objektarray der Wert von obj.password nicht wiederholt wird

.............

为情所困
为情所困

Antworte allen(1)
小葫芦

原因

这个问题很隐蔽诶。

obj 是引用。 意味着你每次 push 的都是同一个 obj

至于值为什么一直都是一样 是因为 你修改的都是同一个 obj 所以值按最后一次的随机数来。


如何修改

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(e => e.password = Math.random()); 

arr.forEach(console.log);

ScreenShot

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!