JavaScript 中未定义的数组变量
2020-04-26
256
我的代码中有一个未定义的 javascript 错误。我找不到导致问题的原因。 我用 ajax 加载 CSV 文件,并按制表符分隔的行和列进行解析。 一切都很好,但我只有一个未定义的变量。
我遗漏了什么?请指教。
我的数据文件如下所示:
Thành phố Hà Nội 01 Quận Ba Đình 001 Phường Phúc Xá 00001 Phường
Thành phố Hà Nội 01 Quận Ba Đình 001 Phường Trúc Bạch 00004 Phường
Thành phố Hà Nội 01 Quận Ba Đình 001 Phường Vĩnh Phúc 00006 Phường
我的 javascript 代码如下:
$(function() {
var fileName = "data.txt";
$.ajax({
url: fileName,
dataType: 'text',
success: function(data) {
var lines = data.split('\n');
//console.log(lines);
$('h1').text(lines.length + ' lines');
//var cols = [];
var cols = new Array();
var col_name = new Array();
//var col_name = [];
for (var i = 0; i < lines.length; i++) {
var cells = lines[i].split('\t');
for (var j = 0; j < cells.length; j++) {
cells[j] = $.trim(cells[j]);
if(j == 0) col_name[j] = 'state';
if(j == 1) col_name[j] = 'code1';
if(j == 2) col_name[j] = 'province';
if(j == 3) col_name[j] = 'code2';
if(j == 4) col_name[j] = 'area';
if(j == 5) col_name[j] = 'code3';
if(j == 6) col_name[j] = 'street';
cols[i] += col_name[j] + '=\'' + cells[j] + '\', ';
}
cols[i] = cols[i].replace(/\,+$/, '');
cols[i] = cols[i].slice(0, -2);
str = "INSERT INTO table SET " + cols[i] + ";";
$('ul').append('<li>' + str + '</li>');
}
}
});
});
我的代码结果如下:
INSERT INTO table SET **undefined**state='Thành phố Hà Nội', code1='01', province='Quận Ba Đình', code2='001', area='Phường Phúc Xá', code3='00001', street='Phường';
INSERT INTO table SET **undefined**state='Thành phố Hà Nội', code1='01', province='Quận Ba Đình', code2='001', area='Phường Trúc Bạch', code3='00004', street='Phường';
INSERT INTO table SET **undefined**state='Thành phố Hà Nội', code1='01', province='Quận Ba Đình', code2='001', area='Phường Vĩnh Phúc', code3='00006', street='Phường';
如您所见,每一行都有未定义的。
1个回答
cols[i] += col_name[j]
// ^ The undefined comes from the +=
// cols[i] is undefined here, so
// you're adding a string to that
您在 sql 语句中混合使用了
update
和
insert
?或者这不是 sql?
这里有一个简化数据处理函数的代码片段。它创建了有效的 sql 插入语句。也许有用。
const txt = `Thành phố Hà Nội 01 Quận Ba Đình 001 Phường Phúc Xá 00001 Phường
Thành phố Hà Nội 01 Quận Ba Đình 001 Phường Trúc Bạch 00004 Phường
Thành phố Hà Nội 01 Quận Ba Đình 001 Phường Vĩnh Phúc 00006 Phường`;
console.log(processTxt(txt));
function processTxt(data) {
const lines = data.split(/\n/);
const col_names = ['state', 'code1', 'province', 'code2', 'area', 'code3', 'street'];
let tableInsertLines = [];
for (var i = 0; i < lines.length; i++) {
const cells = lines[i].split(/\s+|\t/).slice(0, col_names.length);
tableInsertLines.push(`INSERT INTO some_table (${col_names}) values('${
cells.join("','")}');`);
}
return tableInsertLines;
}
.as-console-wrapper { top: 0; max-height: 100% !important; }
KooiInc
2020-04-26