Reputation: 1113
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
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