我完全难过了.. 我上传了一个csv文件到我的数据库,现在我的应用程序应该“玩”它..
在我选择之后,我想将此文件拆分为他的元素。这是我的代码:
var file = result[0].FILE;
var entries;
var lines = {
line: []
};
var i;
var allLines = file.split(/[\r\n]+/g);
for(i = 0; i <= allLines.length; i++) {
entries = allLines[i].split(';');
lines.line.push({
DATEVALUE: entries[0],
VALUE: entries[1]
});
}
我收到了这个错误:
allLines [i]未定义
嗯...... allLines
的长度为182个元素,如果我使用的是allLines[0]
或allLines[1]
而不是allLines[I]
,那么一切都可以。 但为什么循环不起作用?
我的选择看起来像(使用JSON.stringify()输出):
[ “2014-01-01 00:00:00; 309”, “2014-01-02 00:15:00; 198”, “2014-01-03 00:30:00; 274”, “2014-01-04 00:45:00; 140”, “2014-01-05 01:00:00; 167”, “2014-01-06 01:15:00; 276”, “2014-01-07 01:30:00; 283”, “2014-01-08 01:45:00; 304”,......]
答案 0 :(得分:0)
数组是0索引的(它们的下标从0开始)。因此,如果数组包含N
个元素且第一个元素为0
,那么最后一个元素将是N - 1
而不是N
。因此array[array.length]
是undefined
。从此更改for
循环:
for(i = 0; i <= allLines.length; i++) {
// ...
到此:
for(i = 0; i < allLines.length; i++) {
// ...
<强> MATH 强>:
TheNumberOfItems = LastItemIndex - FirstItemIndex + 1;
这样:
array.length = x - 0 + 1; // where x is the index of the last item
然后:
x = array.length - 1;
所以数组的最后一个元素是array.length - 1
而不是array.length
。因此,如果循环的条件为i <= array.length
,那么将在某个时刻评估array[array.length]
(undefined
)。