2010-10-10 2 views
1

Мне нужно сохранить информацию о стране, штате, городе и графстве в Javascript. Пример:Каков наилучший способ сохранить следующее в Javascript?

Country State   City   County 
    USA  CA   Oakland   Alameda 
    USA  CA   Markleeville Alpine 
    USA  WA   Seattle   king 
    ... 
    CANADA  Ontario  Toronto   - 
    ... 

    UK Grater London  London   -   

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

Thanks

ответ

2

Сколько данных мы говорим?

Самый прямой способ будет массив (объектов), которые не могут масштабироваться до десятков тысяч записей:

var data = [ 
    { country: 'USA', state: 'CA', city : 'Oakland', county: 'Alameda' } 
    .... 
]; 
+0

Это около 800 строк и 4 столбца –

+0

не должно быть проблемой.Чтобы найти материал там, вам придется много перебирать массив (так как в базе данных нет индексов), но с 800 строками, я думаю, вы в порядке. – Thilo

+0

если вы храните это в древовидной структуре и заказываете его в алфавитном порядке, то он индексируется наилучшим образом, я предполагаю (да ... Я знаю, что люди говорят о допущениях :-)) –

0

Почти как Тило писал, но я бы хранить их в дерево структура. Каждое дерево одна страна/регион и каждое дерево в другом файле:

var data = { country: 'USA', states: [{name: 'CA', cities: [{'name':'Oakland', county: 'Alameda' }] 
}] 
} 

Каждый из тех, кто в другом файле, и при загрузке они должны наложиться друг на друга (т.е. все файлы начинаются с var data=...

If вы храните, что в/на стороне сервера код DB, убедитесь, что эти файлы кэшируются, никаких проблем в кэширования мег данных.

1

Если вы хотите простой способ обработки вы должны хранить его в JSON.

[ 
    { country: 'USA', state: 'CA', city : 'Oakland', county: 'Alameda' }, 
    { country: 'USA', state: 'CA', city : 'Markleeville', county: 'Alpine' }, 
    { country: 'USA', state: 'CA', city : 'Seattle', county: 'king' } 
    .... 
]; 

Если вы хотите наименьший размер файла возможно, вы должны использовать CSV:

Country,State,City,County 
USA,CA,Oakland,Alameda 
USA,CA,Markleeville,Alpine 
USA,WA,Seattle,king 

Если вы хотите что-то между ними вы можете использовать compressed JSON format:

[ 

    "cols": ["country", "state", "city", "county"], 
    "rows": [["USA", "CA", "Oakland", "Alameda"], 
      ["USA", "CA", "Markleeville", "Alpine"], 
      ["USA", "CA", "Seattle", "king"], 
      ... ] 
}; 

Объяснение

С JSON вы получаете собственный объект Javascript, который загружается через <script> тег или Ajax. Если вы перейдете с сжатым форматом JSON, вы все равно получите собственный объект, разница в том, как вы используете данные. С CSV вы должны написать свой собственный парсер, но небольшой размер может стоить того.

Вы можете прочитать о последствиях производительности JSON и пользовательский формат здесь:

Building Fast Client-side Searches for Flickr

0

Поскольку требование, как представляется, Javascript, независимо от сценария, а затем использовать JSON. Если вы не хотите хранить все на стороне клиента, подумайте о вызове веб-службы, которая вернет только нужные вам данные, это формат JSON.