Mam napisaną taką funkcję, która wyszukuje i paruje ze są elementy z 3 tablic:
function convertValuesToTableArray(values, months, itemsOrder) {
var result = [];
for (var i = 0; i < itemsOrder.length; i++) {
result.push([]);
for (var j = 0; j < months.length; j++) {
for (var k = 0; k < values.length; k++) {
if (values[k][1] == itemsOrder[i]) {
if (values[k][0] == months[j] ) {
result[i].push(values[k][2]);
break;
}
}
}
}
}
result.splice(0, 0, months);
return transpose(result);
Przykładowo:
itemsOrder = ["a", "b"]
months = ["01", "02"]
values = [['01', 'b', 1],
['02', 'b', 2],
['01', 'a', 5],
['02', 'a'. 10]]
czyli w wyniku powinniśmy dostać tablicę
[['01', '02'], [5, 10], [1,2]]
(którą jeszcze na wyjściu transponuje, żeby dostać układ z seriami danych w kolumnach).
I teraz nie bardzo podoba mi się to całe zagnieżdżenie for-ów i if-ów. Czy da się to zrobić prościej i czytelniej? Normalnie tablice przeszukałbym przez indexOf(), ale tu jest tablica tablic.