Angular 如何在TypeScript中嵌套筛选器

Angular 如何在TypeScript中嵌套筛选器,angular,typescript,Angular,Typescript,我有这样一个对象列表: var lista = [ { nombre: "cartera1", saldos: [ { nombre: "saldo1", saldo: 1900000.2345 }, { nombre: "saldo2", saldo: 898304.45 } ]}, { nombre: "cartera2", saldos: [

我有这样一个对象列表:

    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 saldosEnLista = lista.filter(x => 
  x.saldos.filter(y => y.saldo == 1900000.2345));
我想创建一个新变量并将其放入这个新变量中,所有对象的“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 saldosEnLista = lista.filter(x => 
  x.saldos.filter(y => y.saldo == 1900000.2345));
这应该
返回=>“cartera1”
“cartera2”
,但这将返回“cartera1”、“cartera2”和“cartera3” 我用的是angular 9和打字脚本 有什么办法解决这个问题吗

提前感谢。

简短的回答是:

lista.filter( (cartera) => 
    cartera.saldos.some( (saldo) => 
        saldo.saldo == 1900000.2345));
请允许我详细说明

lista
是一个“Carteras”数组,其中包含一个“saldo”数组,因此您可以
array.prototype.filter
它位于第二个数组
array.prototype中。一些
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 saldosEnLista = lista.filter(x => 
  x.saldos.filter(y => y.saldo == 1900000.2345));
var lista=
[
{名称:“卡特拉1”,萨尔多斯:[
{名称:“萨尔多1”,萨尔多:1900000.2345},
{名称:“萨尔多2”,萨尔多:898304.45}
]},
{名称:“卡特拉2”,萨尔多斯:[
{名称:“萨尔多1”,萨尔多:414612.42},
{名称:“萨尔多2”,萨尔多:1900000.2345}
]},
{名称:“卡特拉3”,萨尔多斯:[
{名称:“萨尔多1”,萨尔多:87678.90},
{名称:“萨尔多2”,萨尔多:345409.0345}
]}
];
var result=lista.filter((卡特拉)=>
cartera.saldos.some((saldo)=>
saldo.saldo==1900000.2345);
控制台日志(结果)简短的回答是:

lista.filter( (cartera) => 
    cartera.saldos.some( (saldo) => 
        saldo.saldo == 1900000.2345));
请允许我详细说明

lista
是一个“Carteras”数组,其中包含一个“saldo”数组,因此您可以
array.prototype.filter
它位于第二个数组
array.prototype中。一些
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 saldosEnLista = lista.filter(x => 
  x.saldos.filter(y => y.saldo == 1900000.2345));
var lista=
[
{名称:“卡特拉1”,萨尔多斯:[
{名称:“萨尔多1”,萨尔多:1900000.2345},
{名称:“萨尔多2”,萨尔多:898304.45}
]},
{名称:“卡特拉2”,萨尔多斯:[
{名称:“萨尔多1”,萨尔多:414612.42},
{名称:“萨尔多2”,萨尔多:1900000.2345}
]},
{名称:“卡特拉3”,萨尔多斯:[
{名称:“萨尔多1”,萨尔多:87678.90},
{名称:“萨尔多2”,萨尔多:345409.0345}
]}
];
var result=lista.filter((卡特拉)=>
cartera.saldos.some((saldo)=>
saldo.saldo==1900000.2345);

控制台日志(结果)噢,很好,巧妙地使用了.some()@AndresGuillenHernandez。如果这对您有帮助,请随时将其标记为您的响应。感谢您对.some()@andersguillenhernandez的巧妙使用,如果它对您有帮助,请随时将其标记为您的响应。谢谢