Dobrze, w takim razie opiszę cały problem wraz z tabelami i obiektami, które się w nich znajdują. Chciałbym temat ogarnąć tak jak należy, używając odpowiednich funkcji oferowanych przez ES, żeby nie robić zbędnych pętli i różnych innych dziwnych rzeczy.
Zatem sprawa wygląda tak. Mam następujące trzy tablice:
connections:
[
{name: "Conn1", mtrList: [{id: 1}, {id: 2}]},
{name: "Conn2", mtrList: [{id: 2}, {id: 3}]}
]
meters:
[
{id: 1, name: "Mtr1", systemName: "sysMtr1"},
{id: 2, name: "Mtr2", systemName: "sysMtr2"},
{id: 3, name: "Mtr3", systemName: "sysMtr3"},
{id: 4, name: "Mtr4", systemName: "sysMtr4"},
{id: 5, name: "Mtr5", systemName: "sysMtr5"}
]
metersDiag:
[
{name: "sysMtr1", status: true, value: 23},
{name: "sysMtr2", status: true, value: 24},
{name: "sysMtr3", status: true, value: 25},
{name: "sysMtr4", status: true, value: 26},
{name: "sysMtr5", status: true, value: 27}
]
Cel, który chcę osiągnąć to zgrupowanie elementów meters (uzupełnionych o niektóre propertisy znajdujące się w metersDiag) wg tego co znajduje się w connections w mtrList (są to id metersów). Metersy, które nie należą do żadnych connections chciałbym wrzucić do jakiejś osobnej grupy. Czyli w wyniku wszystkich operacji chciałbym uzyskać coś następującego:
[
{name: "Conn1", mtrList:
[{id: 1, name: "Mtr1", systemName: "sysMtr1", value: 23},
{id: 2, name: "Mtr2", systemName: "sysMtr2", value: 24}]
},
{name: "Conn2", mtrList:
[{id: 2, name: "Mtr2", systemName: "sysMtr2", value: 24},
{id: 3, name: "Mtr3", systemName: "sysMtr3", value: 25}]
},
{name: "Ungrouped", mtrList:
[{id: 4, name: "Mtr4", systemName: "sysMtr4", value: 26},
{id: 5, name: "Mtr5", systemName: "sysMtr5", value: 27}]
},
]
Podejrzewam, że stosując odpowiednie funkcje można to osiągnąć w kilku linijkach. Czy ktoś mógłby mi zasugerować takie rozwiązanie?