Voici mon premier format de tableau JSON:
this.columnNames = [
{field : "Name"},
{field : "Address"},
{field : "Age"}
];
Voici mon premier format de tableau 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"},
];
Ici, je veux comparer la VALEUR qui est présente dans le premier array(columnNames)
et les CLÉS qui sont présentes dans le second tableau. Si c'est égal, alors je veux pousser ces données correspondantes de la seconde array(rowData)
dans le nouveau tableau.
Et je veux mon résultat final comme ceci:
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
la source
la source
Réponses:
Saisissez les champs de chaque objet de votre
columnNames
tableau à l'aide de.map()
. Ensuite, mappez chaque objet dansrowData
un nouvel objet créé à l'aide de.reduce()
, qui inclut uniquement les clés de votrefields
tableau:Si vous pouvez prendre en charge
Object.fromEntries()
(qui prend un tableau de[key, value]
paires imbriquées et en construit un objet), il n'est pas nécessaire d'utiliser.reduce()
:la source
Vous pouvez
filter
vos propriétés d'objet basées sur uncolumnNames
tableau, puis créez simplement un objet en utilisantObject.fromEntries
:Un exemple:
Ou version plus débogable:
Un exemple:
Object.fromEntries est la méthode qui transforme une liste de paires clé-valeur en objet.
La ligne suivante signifie que nous filtrons () le
allProperies
tableau en fonction ducolumnNames
tableau.La méthode some () renvoie
true
si une propriété decolumnNames
existe dansallProperties
:la source
Stockez tous les noms de champ dans une variable à l'
keys
aide de .map . Parcourez ensuite le tableau d'origine et créez un objet ayant les propriétés présentes danskeys
Essayez comme ceci:
Démo de travail
la source
obj
est un nouvel objet vide.obj[key] = item[key]
signifie, en prenant la première boucle, la clé est "Nom", ainsi enobj[key]
sera{Name: }
et enitem.Name
estPraveen
ainsi le résultat sera{Name: "Praveen" }