如何在 TypeScript 中嵌套过滤器
2020-08-14
158
我有如下对象列表:
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 }
]}
];
我想创建一个新变量,并将所有“saldo”等于另一个变量的对象放入这个新变量中,如下所示:
var saldosEnLista = lista.filter(x =>
x.saldos.filter(y => y.saldo == 1900000.2345));
这应该
return => “cartera1”
和
“cartera2”
,但这会返回“Cartera1”、“cartera2”和“cartera3”
我正在使用 angular 9 和 typeScript
有什么想法可以解决这个问题?
提前致谢。
1个回答
简短的回答是:
lista.filter( (cartera) =>
cartera.saldos.some( (saldo) =>
saldo.saldo == 1900000.2345));
请允许我详细说明...
lista
是一个“
Carteras
”数组,其中包含一个“
Saldos
”数组,因此您
array.prototype.filter
它存在于您的第二个数组
array.prototype.some
saldo
中,与您想要的值匹配。
完整的示例将如下所示:
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);
Dalorzo
2020-08-14