我将基于Excel的产品列表另存为.txt。我将其加载到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;
};
这就是你知道我的阵列是如何制作的......
无论如何,有了这个我有一个数组[行] [cols]可以使用。现在我有一个数组[行] [14]的价格,我想比较。我加载一行是现有的produkt(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'这样的东西是没有价值的”(德语Internet Explorer 9 ...)。
这是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));
}
我犯了什么愚蠢的错误?
答案 0 :(得分:1)
我只需插入一个if(Eingabearray[i])
,因为错误来自一些空行......
所以:
for (var i=0, j=Eingabearray.length; i<j; i++) {
if (Eingabearray[i]){
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
};
};
};
现在工作正常。