Andres Guillen Hernandez
Andres Guillen Hernandez

Reputation: 1113

How to do a filter nested in TypeScript

I have a list of objects like this:

    var lista =
 [
      { nombre: "cartera1", saldos: [
      { nombre: "saldo1", saldo: 1900000.2345 },
      { nombre: "saldo2", saldo: 898304.45 }
   ]},
      { nombre: "cartera2", saldos: [
      { nombre: "saldo1", saldo: 414612.42 },
      { nombre: "saldo2", saldo: 1900000.2345 }
   ]},
      { nombre: "cartera3", saldos: [
      { nombre: "saldo1", saldo: 87678.90 },
      { nombre: "saldo2", saldo: 345409.0345 }
   ]}
];

I want to create a new variable and put it into this new variable all the objects where the "saldo" be equal to another variable, like this:

var saldosEnLista = lista.filter(x => 
  x.saldos.filter(y => y.saldo == 1900000.2345));

This should return => "cartera1" and "cartera2" but this returns "Cartera1", "cartera2" and "cartera3" I'm using angular 9 and typeScript any ideas to solve this?

Thanks in advance.

Upvotes: 1

Views: 164

Answers (1)

Dalorzo
Dalorzo

Reputation: 20014

The short answer is :

lista.filter( (cartera) => 
    cartera.saldos.some( (saldo) => 
        saldo.saldo == 1900000.2345));

Allow me to elaborate...

lista is an array of "Carteras" that contains an array of "Saldos" so you array.prototype.filter where it exists within your second array array.prototype.some saldo matching your desired value.

The full example will look like this:

    var lista =
 [
      { nombre: "cartera1", saldos: [
      { nombre: "saldo1", saldo: 1900000.2345 },
      { nombre: "saldo2", saldo: 898304.45 }
   ]},
      { nombre: "cartera2", saldos: [
      { nombre: "saldo1", saldo: 414612.42 },
      { nombre: "saldo2", saldo: 1900000.2345 }
   ]},
      { nombre: "cartera3", saldos: [
      { nombre: "saldo1", saldo: 87678.90 },
      { nombre: "saldo2", saldo: 345409.0345 }
   ]}
];

 var result = lista.filter( (cartera) => 
  cartera.saldos.some( (saldo) => 
      saldo.saldo == 1900000.2345));
      
 console.log(result);

Upvotes: 4

Related Questions