JavaScript Problem?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du musst Math.floor() anstatt Math.round() verwenden.

Math.round() rundet nämlich manchmal auf, weshalb der Index dann Out of Range ist und du undefined zurückgekommst. Math.floor() hingegen rundet immer ab, da stimmt der Index dann.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

Habs auch mal probiert, geht aber bestimmt noch kürzer... egal, hat Spass gemacht.

const pw = (pwLength) => {
  let password = [];
  const chars = '!*#,;?+-_.=~^%(){}[]|:/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.split('');
  while (pwLength > 0) {
    password.push(chars[Math.floor(Math.random() * chars.length)]); 
    pwLength--;
  }
  return 'Dein Passwort lautet: ' + password.join('');
}

Aufruf mit pw(12)