在Javascript中存储以下内容的最佳方法是什么?

时间:2010-10-10 03:55:42

标签: 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中存储此类信息的最佳存储或数据结构是什么?我在考虑阵列,但必须有其他更简单的方法。

由于

4 个答案:

答案 0 :(得分:2)

我们谈论了多少数据?

最直接的方式是数组(对象),可能无法扩展到成千上万的记录:

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

答案 1 :(得分: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,您将获得通过<script>标记或Ajax加载的本机Javascript对象。如果您使用压缩的JSON格式仍然可以获得本机对象,唯一的区别在于您如何使用数据。使用CSV,您应该编写自己的解析器,但小尺寸可能是值得的。

您可以在此处阅读有关JSON和自定义格式的性能影响:

<强> Building Fast Client-side Searches for Flickr

答案 2 :(得分:0)

几乎像Thilo写的那样,但我会将它们存储在树形结构中。每个树一个国家/州和每个树在不同的文件中:

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

每个文件都在不同的文件中,加载后应相互覆盖(即所有文件都以var data=...

开头

如果您将其存储在数据库/服务器端代码中,请确保缓存这些文件,缓存大量数据没有问题。

答案 3 :(得分:0)

由于要求似乎是javascript,无论情况如何,然后使用JSON。如果您不想在客户端存储所有内容,请考虑调用仅返回所需数据的Web服务是JSON格式。