从主脚本文件中分离数组

时间:2015-12-11 00:37:22

标签: javascript arrays readability

我正在开发一个Javascript代码,可以从较小的字符串集生成随机文本。问题是为了使代码易于阅读和扩展,我必须为每个字符串变量使用一行。

这样的事,非常广泛。

var array = [
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
...
]

var array_b = [
//(the same again)
]

var result = array[math.floor(math.random())] + " " + array_b[math.floor(math.random())] 

不用说,这很不舒服。显然,并非不可能习惯;但是如果可能的话,我会摆脱那些长阵列。

有办法吗?将它们放入另一个文件,从另一个页面的另一个脚本调用它们可能吗?还是什么?

2 个答案:

答案 0 :(得分:3)

您可以将数组放入JSON(JavaScript Object Notation)文件中,然后使用ajax请求加载它们

<强> data.json

["text","text","text","text","text","text","text","text","text","text",...]

<强> main.js

//if using jQuery
jQuery.ajax({
  url:"data.json",
  dataType:"json"
}).then(function(data){
   //'data' will be your array use it
});

//if not using jQuery
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        //parse the JSON text
        var data = JSON.parse(xmlhttp.responseText);
        //call a function passing it the array
        response(data);
    }
};
xmlhttp.open("GET", "data.json");
xmlhttp.send();

function response(data){
   //data will be your array use it
}

您也可以将它们添加到单独的js文件中,然后添加第二个<script>元素

<强> data.js

var data =["text","text","text","text","text","text","text","text","text","text",...]

<强> main.html中

<head>
    <script src="data.js"></script>
    <script src="main.js"></script>
</head>

答案 1 :(得分:1)

您可以简单地将它们添加到另一个文件中,只要您确保同时加载它们并确保它们位于全局窗口对象上。这意味着不使用

var array_a = []

你使用:

window.array_a = []

并在当前文件中(您完成所有工作),您将其引用为window.array_a,而不只是array_a

此外,根据您正在使用的编辑器,它很可能允许您根据您描述的原因折叠任何此类数组或函数声明,这也可以解决问题。一个例子是Sublime Text。