我有这个剧本:
$.get('file.txt', function(x) {
var i;
var pos = 0;
var availableTags = [];
x = x.split(/[\;,\n]+/);
for (i = 0; i < x.length; i = i + 2)
availableTags[pos++] = x[i];
console.log(availableTags);
$(function() {
$("#search").autocomplete({
source: availableTags
});
});
}, 'text');
我想让它读取此file.txt的第一列
Airport;aeropuerto
Supermarket;supermercado
Station;estación;It can be a bus station, a train station, etc.
School;escuela
Shop;tienda;It can be a bookshop, a coffeshop, a toyshop, etc.
Chemist's;farmacia
问题是我的脚本读取了一个元素并跳过了下一个元素,我想让它读取每一行的第一个元素。这个问题出现在三个元素的行之后。任何解决方案提前谢谢。
答案 0 :(得分:3)
您的文件在每行中都有非静态列数。使用您的方法,您可以将文件拆分为每个单元格的单个数组。然后你假设每行有两个单元格,向前跳两个单元格。但这种假设是错误的,因为有些行有三个单元格。
不要一起拆分换行符和分号,先在换行符上拆分,然后在分号上拆分。这将为您提供一组字符串数组。
x = x.split("/n").map(function (row) { return row.split(";"); });
availableTags = x.map(function (row) { return row[0]; });
完整样本:
$.get('file.txt', function(file) {
var table = file.split("/n").map(function (row) { return row.split(";"); });
var availableTags = table.map(function (row) { return row[0]; });
console.log(availableTags);
$(function() {
$("#search").autocomplete({
source: availableTags
});
});
}, 'text');
BTW:使用push
方法将新元素推送到数组。
而不是......
var pos = 0;
var arr = [];
for (var ix = 0; ix < 10; ix += 1) {
arr[pos++] = ix;
}
DO
var arr = [];
for (var ix = 0; ix < 10; ix += 1) {
arr.push(ix);
}
如果你可以控制数据文件,我会确保所有行都有相同的列数。对于没有任何数据的列,只需在其后面直接添加分号或换行符即可。