使用文本文件而不是数组?

时间:2016-03-16 21:57:43

标签: javascript html arrays

我对Javascript很新,我想知道是否可以使用上传的.txt文件或.csv文件来替换以下数组;

我想使用.txt的原因。或.csv文件是因为我每天都会收到数百个邮政编码,并更新邮政编码或删除邮政编码(如果他们超过90天)。我不想每天编辑数组。

    if (isInArray(pcode, [2000, 2001, 2100, 2010, 3100, 3131, 3123, 3333, 3215, 4100, 4321, 4567, 4865, 5000]) !== -1) {
    pcheck = "Delivered";
} else {
    pcheck = "Not delivered";
}

这是整个代码:

<!DOCTYPE html>
<html>
<body>

Enter the Post Code:

<input id="code" value="" />

<button onclick="validate()">Submit</button>

<p id="result"></p>
<p id="state"></p>

<script>
function isInArray(value,array) {
return array.indexOf(value) > -1;
}

function validate() {
var pcode, pcheck, pstate;
pcode = Number(document.getElementById("code").value);
if (isNaN(pcode)) {
    pcheck = "This is not a post code.";
    pstate = "No state.";
}

if (isInArray(pcode, [2000, 2001, 2100, 2010, 3100, 3131, 3123, 3333, 3215, 4100, 4321, 4567, 4865, 5000]) !== -1) {
    pcheck = "Delivered";
} else {
    pcheck = "Not delivered";
}

if (((pcode >= 2000) && (pcode <= 2599))||((pcode >= 2619) && (pcode <= 2899))||((pcode >= 2921) && (pcode <= 2999)))  {
    pstate = "NSW";
} else if ((pcode >= 1000) && (pcode <= 1999))  {
    pstate = "NSW LVR/PO Box";
} else if (((pcode >= 2600) && (pcode <= 2618))||((pcode >= 2900) && (pcode <= 2920))) {
    pstate = "ACT";
} else if ((pcode >= 200) && (pcode <= 299)) {
    pstate = "ACT LVR/PO Box";
} else if ((pcode >= 3000) && (pcode <= 3999)) {
    pstate = "VIC";
} else if ((pcode >= 8000) && (pcode <= 8999)) {
    pstate = "VIC LVR/PO Box";
} else if ((pcode >= 4000) && (pcode <= 4999)) {
    pstate = "QLD";
} else if ((pcode >= 9000) && (pcode <= 9999)) {
    pstate = "QLD LVR/PO Box";
} else if ((pcode >= 5000) && (pcode <= 5799)) {
    pstate = "SA";
} else if ((pcode >= 5800) && (pcode <= 5999)) {
    pstate = "SA LVR/PO Box";
} else if ((pcode >= 6000) && (pcode <= 6797)) {
    pstate = "WA";
} else if ((pcode >= 6800) && (pcode <= 6999)) {
    pstate = "WA LVR/PO Box";
} else if ((pcode >= 7000) && (pcode <= 7799)) {
    pstate = "TAS";
} else if ((pcode >= 7800) && (pcode <= 7999)) {
    pstate = "TAS LVR/PO Box";
} else if ((pcode >= 800) && (pcode <= 899)) {
    pstate = "NT";
} else if ((pcode >= 900) && (pcode <= 999)) {
    pstate = "NT LVR/PO Box";
} else {
    pcheck = "This is not a post code.";
    pstate = "No state.";
}

document.getElementById("result").innerHTML = pcheck;
document.getElementById("state").innerHTML = pstate;
}
</script>

</body>
</html>

关于如何简化这一点的任何建议都会很棒。再说一次,我对JS很新,所以任何帮助都会很棒!

2 个答案:

答案 0 :(得分:0)

如果您涉及服务器,那么您有很多选择。

我能想到的最简单的方法就是完成你所要求的内容,它似乎只是在加载到浏览器中后解析文本或csv文件,它将是:

(1)对新文件的人提出文本文件的AJAX请求,最简单的方法就是jQuery.get()

(2).txt文件只是一个字符串,所以你可以这样做:

sum

SELECT count(bookingstatus) FROM beo_eventorder AS TotalBookingStatus WHERE bookingstatus = 'Tentative'; 将成为一个数组,您可以在示例中按照自己的意愿处理。

答案 1 :(得分:0)

如果您使用的是CSV文件。然后,您可以使用ajax(例如$.get('post_code.csv',function(data){ var csv_to_array=parserFunction(data);}))在CSV文件上加载字符串后为其创建解析器函数。

我为你做了一个示例代码。请看http://plnkr.co/edit/6gC7TopyhZ7cEZLxXFx3?p=preview。请尝试“运行”并单击右侧视图中的“CSV到阵列”按钮以查看其工作原理。这些代码的重点是:

  1. 使用post_code.csv(jQuery函数)使用ajax加载名为$.get()的CSV文件的字符串。我使用简单的逗号(',')分隔符制作的CSV文件示例,因为我认为它将保存以分隔每个帖子代码数据。您可以在左侧边栏中找到post_code.csv文件示例。
  2. 使用名为bexplode()的简单CSV字符串解析器,使用var csv_to_array=bexplode(data, ',')解析CSV文件的字符串。
  3. 对于更复杂的CSV格式,我建议您使用更高级的CSV解析器,例如http://papaparse.com/。但对于你的情况,我认为我的功能会很好。