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 } ]
Masalah saya ialah dalam tatasusunan objek kedua yang dijana menggunakan for, nilai obj.password tidak diulang
.............
Sebab
Soalan ini sangat tersembunyi.
obj
ialah rujukan. Ini bermakna setiap kali andatolak
ia adalahobj
yang samaobj
是引用。 意味着你每次push
的都是同一个obj
至于值为什么一直都是一样 是因为 你修改的都是同一个
Mengenai sebab nilai sentiasa sama, ini kerana anda mengubah suaiobj
obj
yang sama, jadi nilai adalah berdasarkan nombor rawak terakhir.