【问题标题】:Separate arrays from main script file从主脚本文件中分离数组
【发布时间】:2015-12-11 00:37:22
【问题描述】:

我正在编写一个 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())] 

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

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

【问题讨论】:

    标签: javascript arrays readability


    【解决方案1】:

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

    data.json

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

    ma​​in.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",...]
    

    ma​​in.html

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

    【讨论】:

      【解决方案2】:

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

      var array_a = []

      你使用:

      window.array_a = []

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

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

      【讨论】:

      • 你对崩溃的事情是完全正确的;可悲的是,我正在与给定的 Tumblr 编辑一起工作,所以这行不通。上传 JS 脚本显然也很棘手(至少我不知道它在 Tumblr 上是如何工作的),但我肯定会找到一种方法 - 或者在最坏的情况下更改为 Wordpress。非常感谢!
      猜你喜欢
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 2021-11-16
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      相关资源
      最近更新 更多