Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.12.2013, 02:03
Аватар для Аленький цветочек
Интересующийся
Отправить личное сообщение для Аленький цветочек Посмотреть профиль Найти все сообщения от Аленький цветочек
 
Регистрация: 29.11.2012
Сообщений: 15

Выбор случайного свойства объекта
Только начала учиться программировать. Пытаюсь написать прогу: есть окно, в левом верхнем углу находится квадратик, при нажатии на него, он перескакивает в любой незанятый угол окна, угол выбирается рандомно.
есть объект:
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 есть идея записать все ключи в отдельный массив и рандомно выбирать из него ключи, а потом вызывать искомый объект. Но я в этом не уверена, тк думаю, что есть другой способ, более изящный чтоли.

Извиняюсь, если тупой вопрос или я непонятно его описала.
Ответить с цитированием
  #2 (permalink)  
Старый 08.12.2013, 02:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Object.keys(corners) - сама ведь написала.
__________________
В личку только с интересными предложениями

Последний раз редактировалось danik.js, 08.12.2013 в 02:30.
Ответить с цитированием
  #3 (permalink)  
Старый 08.12.2013, 02:24
Аватар для Аленький цветочек
Интересующийся
Отправить личное сообщение для Аленький цветочек Посмотреть профиль Найти все сообщения от Аленький цветочек
 
Регистрация: 29.11.2012
Сообщений: 15

danik.js))) спасибо. Вот я тупанула. Я над этим дня два думала )))))

Последний раз редактировалось Аленький цветочек, 08.12.2013 в 02:29.
Ответить с цитированием
  #4 (permalink)  
Старый 08.12.2013, 02:30
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А где получившийся код?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 08.12.2013, 02:45
Аватар для Аленький цветочек
Интересующийся
Отправить личное сообщение для Аленький цветочек Посмотреть профиль Найти все сообщения от Аленький цветочек
 
Регистрация: 29.11.2012
Сообщений: 15

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]);

Как-то так. Мой код можно как-то сократить? Не умею еще писать красиво
Ответить с цитированием
  #6 (permalink)  
Старый 08.12.2013, 03:08
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Да врядли. Только res нужно на строку выше поднять, и соответственно для определения randCorner использовать уже res.length (и я не понял зачем там +0)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 08.12.2013, 11:44
Аватар для Аленький цветочек
Интересующийся
Отправить личное сообщение для Аленький цветочек Посмотреть профиль Найти все сообщения от Аленький цветочек
 
Регистрация: 29.11.2012
Сообщений: 15

danik.js,
math.random() выдает числа в диапазоне [0;res.length)... Блин вот написала и поняла, а зачем я прибавляю 0. )))))))))))) Ох меня клинит
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заморозить свойства объекта Windows graduate Общие вопросы Javascript 5 26.01.2012 05:09
Свойства объекта, методы и this. Почему свойство вызывается с () ? jsuse Общие вопросы Javascript 2 04.11.2011 20:39
IE 8 Не удалось получить значение свойства "match": значением объекта является null abstract Internet Explorer 2 26.08.2011 15:27
Как при чтении или записи свойства объекта вызывать функцию danik.js Общие вопросы Javascript 3 16.09.2010 17:57
Можно ли использовать функции в качестве свойства абс_позиционируемого объекта Newgen Элементы интерфейса 1 27.07.2009 14:40