Aquí está mi primer formato de matriz JSON:
this.columnNames = [
{field : "Name"},
{field : "Address"},
{field : "Age"}
];
Aquí está mi primer formato de matriz 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"},
];
Aquí quiero comparar el VALOR que está presente en la primera array(columnNames)
y KEYS que está presente en la segunda matriz. Si es igual, entonces quiero insertar esos datos coincidentes del segundo array(rowData)
en la nueva matriz.
Y quiero mi resultado final así:
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
fuente
fuente
Respuestas:
Agarra los campos de cada objeto en tu
columnNames
matriz usando.map()
. Luego, asigne cada objetorowData
a un nuevo objeto creado usando.reduce()
, que solo incluye las claves de sufields
matriz:Si puede soportar
Object.fromEntries()
(que toma una matriz de[key, value]
pares anidados y construye un objeto a partir de ellos), entonces no hay necesidad de usar.reduce()
:fuente
Puede establecer las
filter
propiedades de sus objetos en función de lacolumnNames
matriz y luego simplemente crear un objeto usandoObject.fromEntries
:Un ejemplo:
O una versión más depurable:
Un ejemplo:
Object.fromEntries es el método que transforma una lista de pares clave-valor en un objeto.
La siguiente fila significa que filtramos ()
allProperies
matriz según lacolumnNames
matriz.el método some () devuelve
true
sicolumnNames
existe alguna propiedad de enallProperties
:fuente
Almacene todos los nombres de campo en una variable
keys
usando .map . Luego recorra la matriz original y cree un objeto que tenga las propiedades presentes enkeys
Intenta así:
Demo de trabajo
fuente
obj
Es un nuevo objeto vacío.obj[key] = item[key]
significa, tomando el primer bucle, la clave es "Nombre", asíobj[key]
será{Name: }
yitem.Name
esPraveen
, entonces el resultado será{Name: "Praveen" }