Map, find i stworzenie nowego obiektu

0

Cześć, mam następującą linijkę kodu w ts:

this.meters.map(mtr => this.metersDiag.find(mtrDiag => mtrDiag.Name == mtr.systemName))

Czyli jak wiadomo generalnie wyszukuję sobie elementy listy z metersDiag. Moim celem jest utworzenie nowego obiektu, który będzie posiadał w sobie propertisy zarówno z meters jak i metersDiag. W jaki sposób jest możlwe coś takiego zachowując jednolinijkowy kod?

0

to jest bez sensu? co ty w ogóle chcesz zrobić? jakie jest polecenie? co to jest meters, i metersDiag.
I dlaczego mapujesz meteres.

2

Nie wiem czy wiesz ale w ES6 pojawił się spread operator:

const obj1 = {dupa: 1}
const obj2 = {kupa: 2}
const obj3 = {...obj1, ...obj2}
0

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?

1 użytkowników online, w tym zalogowanych: 0, gości: 1