Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:在js文件中包含大列表_Javascript - Fatal编程技术网

Javascript:在js文件中包含大列表

Javascript:在js文件中包含大列表,javascript,Javascript,我有一份城市名字的清单。 我想使用javascript在html选择列表中填充此列表。 名单上有1000多个城市名称。不需要服务器请求。列表是静态的 将如此大的列表包含到js文件中的最佳方式是什么? 考虑到性能问题,我认为在js中声明大型数组将使它更具吸引力 慢。将其作为JSON包含在脚本标记中,并使用浏览器无法处理的mime类型,例如 <script type="conf/cities" id="citieslist"> ['New York', 'London' ... 'Ams

我有一份城市名字的清单。 我想使用javascript在html选择列表中填充此列表。 名单上有1000多个城市名称。不需要服务器请求。列表是静态的

将如此大的列表包含到js文件中的最佳方式是什么? 考虑到性能问题,我认为在js中声明大型数组将使它更具吸引力
慢。

将其作为JSON包含在
脚本
标记中,并使用浏览器无法处理的mime类型,例如

<script type="conf/cities" id="citieslist">
['New York', 'London' ... 'Amsterdam']
</script>
更新: 另一种方法是将列表作为简单的文本字符串包含,名称由换行符分隔。这将允许您只需使用
string.split()
即可获得列表

var citylist = $("#citieslist").text().split('\n');
如下图所示,这相当节省空间

<script type="conf/cities" id="citieslist">
New York
London
Amsterdam
</script>

纽约
伦敦
阿姆斯特丹

将其作为javascript数组包含。这样,您就可以轻松地遍历它并填充选择框

var cities = [ 'London', 'Paris', 'Rome' ]; 
for (index in cities) {
    var city = cities['index'];
    //add value to select box
}
如果需要多个城市名称,可以创建对象数组:

var cities = [ { id : '1', name : 'Rome' }, { id : '2', name : 'London' }, ... ];

如果只涉及JS,您可以创建类似这样的东西

var cities=[‘City1’、‘City2’、‘City3’、…]

如果控制员也参与其中。您可以在控制器中形成城市阵列,并将其分配给视图和视图文件

var cities=[echo$cityList;]


其中$cityList是一个来自表单控制器的数组。

为什么需要Javascript来填充HTML元素?为什么不在HTML文件中创建列表呢?我认为解析一个大的JavaScript列表的代价与浏览器呈现相同大小的HTML选择列表所需的代价相比是微不足道的。@Henrik如果你基于该列表用JavaScript构建HTML DOM,浏览器无论如何都需要呈现。是否必须
eval()
文本内容以便能够使用JSON对象?不,调用
parseJSON
(内置版本或从库中)就足以安全地解析它。是的,这就是我的意思。你可以把这一步添加到你的答案中。
var cities = [ { id : '1', name : 'Rome' }, { id : '2', name : 'London' }, ... ];