***** ИЗМЕНЕНО ДЛЯ ВКЛЮЧЕНИЯ ИСТИНА МИНИМАЛЬНЫЙ ВОСПРОИЗВОДИМЫЙ ПРИМЕР *****
У меня есть вложенный цикл for
, который читает элементы из массива и записывает в другоймассив.Внутренний цикл for
должен проверять элементы в одном из массивов и break
возвращаться во внешний массив, когда элементы не равны.
Я сослался на stackoverflow для всех связанных вопросов, чтобы попытаться найтирешение.Я попытался записать элементы массива в переменные и сравнить их, но результат тот же;if
условие срабатывает беспорядочно, и я не могу определить, что это за шаблон.
Я использовал Logger.log
в моих условиях тестирования и мне удалось точно определить оператор for
, который вызывает проблемы -но я не смог найти решение.
function importCollection() {
var xpacs = [[1], [1], [1], [1], [1], [1], [2], [2], [3], [3], [3]];
var cards = [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11]];
var cards0 = [];
var cards1 = [];
var cards2 = [];
var cards3 = [];
var cards4 = [];
var a = 0;
var b = 0;
var c = 0;
var x = 0;
var y = 11;
for (b;c<y;b++) {
x = xpacs[c];
// Logger.log("x: "+x)
// Logger.log("xpacs: "+xpacs[c]);
PACK_LOOP: for (var a=0;a<5;a++) {
if (c==y || x!=xpacs[c]) { // ***** ERROR - This is the code that is triggering too often
Logger.log("Row: "+b);
Logger.log("Col: "+a);
Logger.log("Card: "+c);
Logger.log(x);
Logger.log(xpacs[c]);
Logger.log("This if statement shouldn't be triggering when the two lines above are equal!");
break PACK_LOOP
}
eval("cards"+[a]+"[b] = cards[c]");
c++;
}
}
Logger.log(cards0);
Logger.log(cards1);
Logger.log(cards2);
Logger.log(cards3);
Logger.log(cards4);
}
Ожидаемые результаты должны быть:
[[1.0], [6.0], [7.0], [9.0]]
[[2.0], null, [8.0], [10.0]]
[[3.0], null, null, [11.0]]
[[4.0], null, null, null]
[[5.0], null, null, null]
Спасибо всем за помощь