Только добавить, если еще не на месте - PullRequest
3 голосов
/ 02 января 2011

Вот моя структура данных:

var data = [
 { id: '1924', info: 'boo' },
 { id: '1967', info: 'foo' }
];

Значение идентификатора должно быть уникальным, но информация может быть не уникальной.Как добавить новые данные в хеш данных, только если идентификатор новых данных уникален?

Является ли единственный способ перебрать весь хеш и посмотреть, существует ли уже такой идентификатор?

data.push({ id: '1967', info: 'goo-goo' }); //should not be added
data.push({ id: '1963', info: 'goo-goo' }); //should be added

Ответы [ 2 ]

9 голосов
/ 02 января 2011

Если вы можете изменить свою структуру данных, это можно сделать с меньшим количеством кода:

var data = {
    '1924': {'info': 'goo-goo'},
    '1967': {'info': 'boo-boo'}
};

function add(obj, id, data) {
    if (obj[id] === undefined) { // if you have fear about the prototype chain being poisoned
                                 // add in a hasOwnProperty
        obj[id] = data;
    }
}

Это также будет иметь преимущество в том, что доступ к нему будет намного быстрее (если у вас есть идентификатор).

0 голосов
/ 02 января 2011

Иво, проблема с вашим решением в том, что я также отслеживаю индекс информации, отображаемой в данный момент. Индекс { id: '1967', info: 'foo' } будет равен 1 в этом хэше данных, поэтому я могу ссылаться на него data[1], если это необходимо.

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