Нужен образец литерала объекта javascript

Мне нужен образец литерала объекта js, доступ к которому можно получить следующим образом:

hist.undo[0].operation[0].x // would print '2' or whatever
hist.undo[0].operation[0].y // would print '21' or whatever
// [...]
hist.undo[2].operation[0].x // would print '32' or whatever
hist.undo[2].operation[0].y // would print '12' or whatever

Спасибо!


person Rigil    schedule 19.01.2011    source источник
comment
@Toader Mihai Claudu - Нет. Я новичок в JSON, и у меня проблемы с созданием объектов.   -  person Rigil    schedule 19.01.2011
comment
Этот пост может помочь вам лучше понять объекты JavaScript stackoverflow.com/questions/1704618/   -  person Lance    schedule 19.01.2011


Ответы (2)


(рабочий пример jsfiddle здесь)

var sample_operation_member = {"x": 100, "y": 250};
var sample_undo_member = { "operation" : [sample_operation_member, sample_operation_member,sample_operation_member] };

var hist = {
   "undo": [
      sample_undo_member,
      sample_undo_member,
      sample_undo_member,
      sample_undo_member
   ]
}

alert(hist.undo[0].operation[0].x);

Или, более подробно:

var hist = {
    undo: [
        {"operation": [{"x": 100, "y":100},{"x": 100, "y":100},{"x": 100, "y":100}]},
        {"operation": [{"x": 100, "y":100},{"x": 100, "y":100},{"x": 100, "y":100}]},
        {"operation": [{"x": 100, "y":100},{"x": 100, "y":100},{"x": 100, "y":100}]},
        {"operation": [{"x": 100, "y":100},{"x": 100, "y":100},{"x": 100, "y":100}]}
    ]
}

alert(hist.undo[0].operation[0].x);
person Kyle Wild    schedule 19.01.2011
comment
вы можете рассмотреть возможность следования спецификации. json.org Строка – это последовательность из нуля или более символов Юникода, заключенная в двойные кавычки с использованием обратной косой черты. Хотя большинство парсеров работают без кавычек, рекомендуется включить их - person RichardTheKiwi; 19.01.2011
comment
просто помнить, что ObjectLiteral != SJON должно быть одинаковым, но не действовать всегда одинаково - person Vitim.us; 20.12.2011
comment
Спасибо еще раз. Я обновил свой ответ и пример JSFiddle, чтобы включить совет @Richardakacyberkiwi - person Kyle Wild; 22.12.2011

person    schedule
comment
Разве это не будет работать, только если есть 1 отмена? Мне нужно несколько объектов отмены, содержащих несколько операций. Таким образом, каждый объект истории содержит несколько объектов отмены. Каждый объект отмены содержит несколько объектов операций, которые сами содержат несколько операций. Спасибо - person Rigil; 19.01.2011
comment
Вы можете быть сбиты с толку. Из индекса undo[2] должно быть ясно, что там есть 3 объекта отмены. Пожалуйста, посмотрите еще раз. Обозначение 'отменить: [' означает, что отмена является массивом, и в этом массиве вы видите 3 безымянных объекта. - person RichardTheKiwi; 19.01.2011
comment
Ах, моя ошибка. Спасибо, это именно то, что мне нужно. - person Rigil; 19.01.2011