JavaScript枚举

时间:2014-08-26 15:09:08

标签: javascript enumeration

我有一个文件[不是.js文件],其中包含以下列格式映射错误代码的错误列表。

    404  = The requested resource could not be found
    500  = Internal server error
    1001 = No message body found
    1002 = No message header found

依旧...... [约3000行。]

我希望编写一个函数,将错误代码作为参数传递,并期望将相应的字符串作为errorString接收。

我正在使用Javascript作为我的网络应用。但遗憾的是,该文件包含此格式的错误列表。 C任何人都建议我应该做些什么来完成工作。

我也准备将此文件转换为java脚本文件,如果任何正文可以建议我如何实现大约3000行代码。

谢谢。

3 个答案:

答案 0 :(得分:4)

  

我也准备将此文件转换为java脚本文件,如果任何正文可以建议我如何   实现约3000行代码。

使用任何有价值的编辑器,您只需将",附加到每一行,然后将=替换为:"。这会给你:

404: "The requested resource could not be found",
500: "Internal server error",
1001: "No message body found",
1002: "No message header found",

然后用};替换文件中的最后一个逗号,并在开头添加var myObject = {,然后就完成了。

答案 1 :(得分:0)

如果您无法更改文件类型或内容,您可以尝试解析它并将其放入页面加载事件的dict中,这样您就可以创建一次dict并可用于所有功能< / p>

var url='URL-TO-YOUR-FILE'
messages = {} //global scope, messages will be available for all your functions
parse_messages().done(function(r) {
    messages = r
})
.fail(function(x) {
    //messages doesn't load well, show the error
    console.log(x)
});


function parse_messages(){
    return $.get(url, function(html){
        lines = html.split(/\n/)
        lines.forEach(function(line){
            var splitted_line = line.split("=")
            if (splitted_line && splitted_line.length == 2){
                var code = splitted_line[0].trim()
                //check if code is valid
                if(!isNaN(code)){
                    messages[code] = splitted_line[1].trim()
                }
            }   
        })
    })
}

这是输出

>>>> messages
>>>> Object {404: "The requested resource could not be found", 500: "Internal server error", 1001: "No message body found", 1002: "No message header foundvar codes;"}

答案 2 :(得分:-2)

做Niels或meagar所说的,然后使用(jquery)

获取你的文件
var codes;
$.get(FILEURL, function(res){ codes = res; });

function getMessageFromCode(code){
  return codes[code];
}

或者,只需使用codes[500],就不需要函数了。

修改

如果您需要同步,这是明智的,那么只需在<head>中包含该文件(在Niels建议的编辑之后)。您将能够使用myObject[500]