JavaScript: Можно ли создать массив с несколькими значениями для каждого элемента массива?

#javascript #arrays #function

Вопрос:

Отказ от ответственности: Я очень новичок в javascript, но это моя линия мышления, я хочу создать генератор случайных паролей и хочу хранить все возможные переменные в одном массиве. Так, например, я хочу, чтобы массив выглядел так:

 var characters = [
{
numbers: ("0", "1", "2", "3", "4" , "5", "6" , "7", "8", "9"),
specialChar: ("!", "%", "amp;", ",", "*", " ", "-", ".", "/", "<", ">", "?","~"),
upprCase: ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"),
lowrCase: ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"),
 

Моя цель состоит в том, чтобы иметь возможность ссылаться на это как на глобальный массив и оттуда создавать функцию для рандомизации значений внутри массива и возврата вновь сгенерированного пароля.
Я не прошу никого делать это, я просто хочу знать, сработает ли этот подход.

Комментарии:

1. вы можете использовать другие массивы для значений.

2. ну, ваш массив внутри не является массивом [ { numbers: ("0", < — это ( не массив. Непонятно, почему у вас есть [] вокруг объекта.

3. Я добавил ссылку на скриншот того, что у меня есть для моего массива, я просто не знаю, возможно ли сгенерировать случайную строку для пароля, используя то, что указано внутри массива. Или я должен просто сделать каждый элемент массива (т. Е. specChar) в их собственные соответствующие массивы и ссылаться на них по отдельности. Опять же, я очень новичок в этом, поэтому прошу прощения, если в этом нет особого смысла

Ответ №1:

Он практически у вас есть, но () не работает в JavaScript. Вместо этого вы можете использовать массив. Вы можете вложить массивы, поэтому в вашем случае массивы находятся внутри словаря.

 var characters = {
    'numbers':["0", "1", "2", "3", "4" , "5", "6" , "7", "8", "9"], 
    'specialChar':["!", "%", "amp;", ",", "*", " ", "-", ".", "/", "<", ">", "?","~"],
    'upperCase':["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"],
    'lowerCase':["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
}
 

В этом коде словарь (отмеченный {} ) содержит массивы с вашими ключами. Чтобы использовать это, вы можете использовать characters['numbers'][0] , чтобы получить первое число. В вашем случае вам нужны случайные символы, поэтому вы можете использовать что-то вроде

characters['numbers'][Math.floor(Math.random()*10)]

Однако имейте в виду, что словари не упорядочены. Поэтому, если вы хотите случайным образом выбирать между цифрами, специальными символами и буквами, вы можете выбрать случайным образом из массива:

 choices = ["numbers", "specialChar", "upperCase", "lowerCase"]
chartype = choices[Math.floor(Math.random() * 4)]
 

А затем используйте это, чтобы получить случайный символ,

characters[chartype][Math.floor(Math.random()*10)]

Комментарии:

1. Большое вам спасибо! Это именно то, о чем я думал, я еще не узнал о словарях для массивов, какая потрясающая концепция.