cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Mengenai gelung untuk mencipta tatasusunan objek dan menambah nilai rawak


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

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

为情所困为情所困2728 hari yang lalu648

membalas semua(1)saya akan balas

  • 高洛峰

    高洛峰2017-06-05 11:15:16

    Sebab

    Soalan ini sangat tersembunyi.

    obj ialah rujukan. Ini bermakna setiap kali anda tolak ia adalah obj yang sama obj 是引用。 意味着你每次 push 的都是同一个 obj

    至于值为什么一直都是一样 是因为 你修改的都是同一个 obj

    Mengenai sebab nilai sentiasa sama, ini kerana anda mengubah suai obj yang sama, jadi nilai adalah berdasarkan nombor rawak terakhir.

    Cara mengubah suai

    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

    🎜

    balas
    0
  • Batalbalas