Доступ и хранение наборов данных в JavaScript - PullRequest
0 голосов
/ 20 декабря 2011

Я пытаюсь выяснить, каков наилучший способ хранения и доступа к данным в javascript.

Я хочу выбрать данные, связанные с «идентификатором», значение которого ранее неизвестно, или добавить новый набор данных с новым случайным «идентификатором».

я делаю это с массивом или объектом?

массив хранения

{
"data": [
    {
        "key1": "identfifier1",
        "key2": "value2",
        "key3": "value3"
    },
    {
        "key1": "identfifier2",
        "key2": "value2",
        "key3": "value3"
    }
]
}
  • Массивы остаются упорядоченными в js. это важно для меня, потому что я хочу отобразить данные на экране.
  • более сложный выбор набора данных, связанный с «идентификатором» (необходим некоторый цикл или содержащий вспомогательный метод, например, data.conisting («идентификатор»). Key2)

объект хранения

{
"data": {
    "identfifier1": {
        "key1": "value1",
        "key2": "value2",
        "key3": "value3"
    },
    "identfifier2": {
        "key1": "value1",
        "key2": "value2",
        "key3": "value3"
    }
}
}
  • объекты не остаются упорядоченными в js, но это важно для меня, потому что его данные отображаются на экране (мне пришлось бы сортировать весь объект перед каждым выводом данных)
  • простой и быстрый выбор данных, сопоставляемых с «идентификатором» (просто используйте identiffifier1.key2 для примера, без цикла или вспомогательного метода для поиска набора данных, содержащего «идентификатор»)

какие-нибудь идеи, методы, лучшие способы сделать это? один путь лучше другого?

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Если вы выполняете больше операций чтения, чем записи, то лучше использовать объект и хранить отдельный массив ключей объекта, которые можно сортировать при необходимости.

data = {
    identfifier1 : { key1: value1,
            key2: value2,
            key3: value3
          },
    identfifier2 : { key1: value1,
            key2: value2,
            key3: value3
          }
}

И при добавлении нового ключа:

data.identifier3 = ...

Обновить порядок:

var sorted = Object.keys( data ).sort();

Для итерации упорядоченным образом:

for( var l = sorted.length, i = 0; i < l; ++i ) {
     alert( data[sorted[i]] );
}

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

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

1 голос
/ 20 декабря 2011

Используйте JSON (ваш второй подход). Он предназначен для этой цели и имеет много встроенных функций и дополнительных библиотек для поддержки вашей работы. Будет легко использовать базу данных (например, CouchDB или MongoDB) без необходимости конвертировать объекты.

...