Выбор случайного свойства объекта
Только начала учиться программировать. Пытаюсь написать прогу: есть окно, в левом верхнем углу находится квадратик, при нажатии на него, он перескакивает в любой незанятый угол окна, угол выбирается рандомно.
есть объект: var corners = { tl : [0,0], tr : [0,bodyWidth - trButWidth], bl : [bodyHeight - trButHeight, 0 ], br : [bodyHeight - trButHeight,bodyWidth - trButHeight] }; var randCorner = Math.floor( Math.random()*(Object.keys(corners).length)+0); Мне нужно рандомно выбрать одно из свойств. А randCorner считает чиcло, но ведь corners не является массивом (знаю что в javascript все объекты:) Иначе все было бы проще : corners[randCorner] . А тут ключи объекта являются строками и к ним нельзя обратиться corners[1] Так как же выбрать случайный , правильней сказать, ключ? Уже начинаю подумывать объект corners сделать массивом и не мучиться, но это ведь не так интересно. PS есть идея записать все ключи в отдельный массив и рандомно выбирать из него ключи, а потом вызывать искомый объект. Но я в этом не уверена, тк думаю, что есть другой способ, более изящный чтоли. Извиняюсь, если тупой вопрос или я непонятно его описала. |
Object.keys(corners) - сама ведь написала.
|
danik.js))) спасибо. Вот я тупанула. Я над этим дня два думала )))))
|
А где получившийся код?
|
danik.js,
var corners = { tl : [0,0], tr : [0,100], bl : [100, 0 ], br : [100,100] }; var randCorner = Math.floor( Math.random()*(Object.keys(corners).length)+0); var res = Object.keys(corners); console.log(randCorner + " " + res[randCorner]); Как-то так. Мой код можно как-то сократить? Не умею еще писать красиво |
Да врядли. Только res нужно на строку выше поднять, и соответственно для определения randCorner использовать уже res.length (и я не понял зачем там +0)
|
danik.js,
math.random() выдает числа в диапазоне [0;res.length)... Блин вот написала и поняла, а зачем я прибавляю 0. )))))))))))) Ох меня клинит |
Часовой пояс GMT +3, время: 18:41. |