首页 > 解决方案 > 如何做一个嵌套在 TypeScript 中的过滤器

问题描述

我有一个这样的对象列表:

    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 有什么想法可以解决这个问题吗?

提前致谢。

标签: angulartypescript

解决方案


简短的回答是:

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

请允许我详细说明...

lista是一个“ Carteras ”数组,其中包含一个“ Saldos ”数组,因此您array.prototype.filter在第二个数组saldo中存在的位置与您所需的值相匹配。array.prototype.some

完整的示例将如下所示:

    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);


推荐阅读