使用文本文件而不是数组
Using a text file instead of an array?
我对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很陌生,所以任何帮助都会很棒!
如果你涉及服务器,那么你有很多选择。
我能想到的最简单的方法就是在加载到浏览器中后解析文本或 csv 文件,这似乎是:
(1)对文本文件发出AJAX请求,对于Javascript新手来说,最简单的方法可能是jQuery.get()
(2).txt文件只是一个字符串,所以你可以这样做:
var lines = file.split(''n');
然后lines
将是一个数组,您可以在示例中根据需要进行处理。
如果您使用的是 CSV 文件。然后,您可以使用ajax在CSV文件上加载字符串后为其创建一个解析器函数,例如:$.get('post_code.csv',function(data){ var csv_to_array=parserFunction(data);})
。
我为您制作了一个示例代码。请看一下 http://plnkr.co/edit/6gC7TopyhZ7cEZLxXFx3?p=preview。请尝试"运行",然后单击右侧视图上的"CSV到阵列"按钮以查看其工作原理。这些代码的要点是:
- 使用 ajax 加载名为
post_code.csv
的 CSV 文件的字符串$.get()
(jQuery 函数)。我使用简单的逗号(',')分隔符制作的CSV文件示例,因为我认为它将保存以分隔每个邮政编码数据。您可以在左侧边栏上找到post_code.csv文件示例。
使用我的简单 CSV 字符串解析器 - 解析 CSV 文件的字符串 ,在那里称为
bexplode()
,通过使用 var csv_to_array=bexplode(data, ',')
.对于更复杂的CSV格式,我建议您使用更高级的CSV解析器,例如 http://papaparse.com/。但是对于您的情况,我认为我的功能会很好。
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 正在尝试将JSON文件放入JS数组
- React.js如何从js文件中获取数组
- 将大数组(字符串和类型数组的混合物)存储到blob或文件中/从blob或文件检索大数组的最佳方式
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- 如何从txt文件中获取要在javascript数组中使用的对象
- 数组在手动写入时有效,但从文本文件加载时无效
- 在将csv文件中的数据分配给数组变量时增强了d3代码
- 将javascript数组写入文件
- 从不一致的文件路径数组中获取键的值
- 如何将json文件中的数据提取到对象数组中,并在两个控制器之间共享
- 读取外部local.txt文件以将数据加载到数组中
- 将文本文件读入数组
- Grunt 可以直接从文件对象/数组或 glob 中的“src”值通过 HTTP 加载远程文件
- 将 FormData 对象放入数组中以从不同的输入文件上载文件
- 验证数组文件字段的表单提交
- 放在哪里;很多“;数据的数组/文件/其他地方,在node.JS上的JS中
- Html5文件读取器-读取本地Json数组文件并仅显示特定部分
- 未由使用 JavaScript 的 JSON 数组文件定义
- 使用JavaScript将JSON数组文件转换为图形