我正在开发一个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())]
不用说,这很不舒服。显然,并非不可能习惯;但是如果可能的话,我会摆脱那些长阵列。
有办法吗?将它们放入另一个文件,从另一个页面的另一个脚本调用它们可能吗?还是什么?
答案 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。