我有一个文件,其结构如下所示:
33,40,43,45,47,49
34,40,41,45,46,48
36,40,43,45,46,48
15,39,43,44,47,49
35,40,42,45,47,49
...
我正在尝试加载文件数据并将其中的所有内容写入一维数组,重要的是它最终是数字。有一种选择,但在我看来它效率低下,因为使用现有的 JS 函数可以更轻松地完成所有事情。
我的版本看起来像这样并且不起作用,因为有多少东西我没有尝试过 - 未定义或出现字符串。例如,我不明白如何用其他数组扩展一个数组(一维),使其数据变成数字。
if (window.File && window.FileReader && window.FileList && window.Blob) {
document.getElementById('file').addEventListener('change', function(e) {
var file = e.target.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var text = e.target.result;
var newarray = text.split('\n');
for (i=0; i<newarray.length; i++) {array.concat(newarray[i].split(','));}
for (i=0; i<array.length; i++) array[i] = Math.floor((array[i]/50)*100)/100;
for (i=0; i<array.length-501; i++) {
array2.push([array.slice(i,i+500), [array[i+501]]]);
}
};
reader.readAsText(file);
});
} else {
alert('File API is not supported!');
}
好吧,之后我根据给定的数据制作了另一个数组。除了再次强调必须将所有数据写入一维数组之外,这不会影响任何其他内容。
您是否正在尝试获取这样的数组:
[33, 40, 43, 45, ...]?然后两个嵌套循环和两次调用就足够了String.prototype.split(),就像你所做的那样。它是这样工作的:String.prototype.trim()以删除文件末尾的换行符。相反
for...in,您也可以根据需要使用for...of(ES6) 或Array.prototype.forEach()- 。