Обработка массива объектов JSON - PullRequest
2 голосов
/ 21 апреля 2011

У меня очень простой вопрос:

Взгляните на эту строку JSON:

this.objects = [{"pid":"2","x":"10","y":"10"}]; // only one i know

Теперь я хотел бы выделить объект из него следующим образом:

 this.objects.pid[2]

Я знаю, что в этом случае это бессмысленно, так как вы обращаетесь к нему, например:

 this.objects[0]

Дело в том, что мне нужно адресовать массив объектов в JSON с помощью идентификатора объекта, а не массиваиндекс.Есть хороший подход к этому?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 21 апреля 2011
function getObject(id, array) {
    for (var i = 0; i < array.length; i++) {
        if (array[i].pid ==  id) {
             return array[i]
        }
    }
}

Функция, которая берет ваш идентификатор и массив и возвращает ваш объект. В основном перебирайте массив и находите элемент с вашим идентификатором. Это может быть дополнительно кэшировано для увеличения скорости.

2 голосов
/ 21 апреля 2011

Это не обязательно должен быть массив из одного элемента, поэтому попробуйте это ...

this.objects = {"pid":"2", "x":"10", "y":"10"};

И вы можете прочитать его одним из следующих способов:

this.objects.pid;
this.objects['pid'];

ЕслиВы хотели несколько списков х, у и т. д.затем попробуйте что-то вроде этого:

this.objects = { "2": {"x": "10", "y": "10"} };
this.objects["2"].x;
this.objects["2"]["x"];

По сути, в этом случае просто используйте «pid» в качестве ключа для каждого объекта, который содержит свойства, которые вы хотите для каждого элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...