我有一个以.txt格式保存的基于Excel的产品列表。我按照以下方式将其加载到JavaScript中:
function make2DArray (pfad){
var Daten = loadFile(pfad);
var Array = createArray(Daten);
return Array;
}
function createArray(data_in){
var Zeilen = data_in.split("\n");
var Spalten = new Array();
for (var i=0; i<Zeilen.length; i++)
{
Spalten = Zeilen[i].split("\t");
Zeilen[i] = Spalten.splice(0, Spalten.length);
}
return Zeilen;
};
function loadFile(file_in)
{
var file_out;
$.ajax({
type: "GET",
url: file_in,
dataType: 'text',
async: false,
success: function(data){
file_out = data;
},
error: function(){
openDialog('Datei nicht gefunden', file_in + " konnte nicht gefunden werden.\n<br />Bitte wende dich an einen Troubleshooter oder Teamleader!");
}
});
return file_out;
};
这样你就知道我的数组是如何生成的了...
无论如何,我现在有一个Array[rows][cols]来处理。现在我有一个价格在array[rows][14]中,我想要进行比较。我加载了一行现有产品(1D数组)和我的2D数组:
function PackAusfiltern (arrzeile, arr) {
var Eingabearray = arr;
var Ausgabearray = "";
var BestandPreis = arrzeile[14];
BestandPreis = BestandPreis.replace(/\,/g, '.');
BestandPreis = parseFloat(BestandPreis);
//Here I get the price of the existing package which I want to compare
现在来说我的实际问题:
我想逐行遍历,获取第14列的值并将其转换为数字(有些数字存储为“39,90”,因此我需要更改“,”为“。”)。
我总是在这一行中遇到错误:
var zwischenspeicher = Eingabearray[i][14]+"";
它大概意思是:“无法获取属性'14'的值”(来自德国IE9浏览器...)。下面是一个 for 循环,用于获取值并将其转换为数字,比较并删除元素。其中第二行已经出现了错误。
for (var i=0, j=Eingabearray.length; i<j; i++) {
var zwischenspeicher = Eingabearray[i][14]+"";
zwischenspeicher = zwischenspeicher.split(',').join('.');
zwischenspeicher = parseFloat(zwischenspeicher);
Eingabearray[i][14] = zwischenspeicher;
if ((BestandPreis <= Eingabearray[i][14]) && Eingabearray[i][16] == 1)
{
var löschenPO = Eingabearray.indexOf(Eingabearray[i][17]); // Find other pack code
var löschenindex = Eingabearray.indexOf(löschenPO); // Search other pack
Eingabearray = Eingabearray.splice(löschenindex, 1); // Delete other pack
}
};
仅供参考:
for (var i=0, j=Eingabearray.length; i<j; i++) {
alert(Eingabearray[i][14]); //= '39.90'
并且
type(Eingabearray[i][14]); //= [object Number]
function type(obj){
alert(Object.prototype.toString.call(obj));
}
我犯了什么愚蠢的错误?