Oto mój pierwszy format tablicy JSON:
this.columnNames = [
{field : "Name"},
{field : "Address"},
{field : "Age"}
];
Oto mój pierwszy format tablicy JSON:
this.rowData = [
{Name : "Praveen",Address : "aiff",Age : "12",w : "1",e : "8"},
{Name : "Akashay",Address : "xvn",Age : "15",w : "2",e : "7"},
{Name : "Bala",Address : "hjk",Age : "16",w : "3",e : "6"},
{Name : "Charu",Address : "sss",Age : "17",w : "4",e : "5"},
];
Tutaj chcę porównać WARTOŚĆ, która jest obecna w pierwszej array(columnNames)
i KLUCZE, która jest obecna w drugiej tablicy. Jeśli jest równy, to chcę wypchnąć te pasujące dane z drugiej array(rowData)
do nowej tablicy.
Chcę mój wynik końcowy w ten sposób:
public rowData: any =[
{Name : "Praveen",Address : "aiff",Age : "12"},
{Name : "Akashay",Address : "xvn",Age : "15"},
{Name : "Bala",Address : "hjk",Age : "16"},
{Name : "Charu",Address : "sss",Age : "17"},
];
arrays
angular
comparison
Praveen Sivanadiyar
źródło
źródło
Odpowiedzi:
Chwyć pola z każdego obiektu w
columnNames
tablicy za pomocą.map()
. Następnie przypisz każdy obiektrowData
do nowego obiektu utworzonego za pomocą.reduce()
, który zawiera tylko klucze zfields
tablicy:Jeśli możesz obsługiwać
Object.fromEntries()
(która pobiera tablicę zagnieżdżonych[key, value]
par i buduje z nich obiekt), nie musisz używać.reduce()
:źródło
Możesz
filter
ustawić właściwości obiektu na podstawiecolumnNames
tablicy, a następnie po prostu utworzyć obiekt, używającObject.fromEntries
:Przykład:
Lub bardziej debugowalna wersja:
Przykład:
Object.fromEntries to metoda, która przekształca listę par klucz-wartość w obiekt.
Poniższy wiersz oznacza, że filtrujemy ()
allProperies
tablicę na podstawiecolumnNames
tablicy.metoda some () zwraca,
true
jeśli jakaś właściwość parametrucolumnNames
istnieje wallProperties
:źródło
Przechowuj wszystkie nazwy pól w zmiennej
keys
za pomocą .map . Następnie przejdź przez oryginalną tablicę i utwórz obiekt posiadający właściwości w nim zawartekeys
Spróbuj tak:
Demo pracy
źródło
obj
to nowy pusty obiekt.obj[key] = item[key]
środki, biorąc pierwszą pętlę, kluczem jest „Nazwa”, więcobj[key]
będzie{Name: }
iitem.Name
toPraveen
, więc wynik będzie{Name: "Praveen" }