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
columnNamesmatriz usando.map(). Luego, asigne cada objetorowDataa un nuevo objeto creado usando.reduce(), que solo incluye las claves de sufieldsmatriz: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
filterpropiedades de sus objetos en función de lacolumnNamesmatriz 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 ()
allProperiesmatriz según lacolumnNamesmatriz.el método some () devuelve
truesicolumnNamesexiste alguna propiedad de enallProperties:fuente
Almacene todos los nombres de campo en una variable
keysusando .map . Luego recorra la matriz original y cree un objeto que tenga las propiedades presentes enkeysIntenta así:
Demo de trabajo
fuente
objEs un nuevo objeto vacío.obj[key] = item[key]significa, tomando el primer bucle, la clave es "Nombre", asíobj[key]será{Name: }yitem.NameesPraveen, entonces el resultado será{Name: "Praveen" }