Как создать фильтр, вложенный в TypeScript

#angular #typescript

#angular #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
есть идеи по решению этой проблемы?

Заранее спасибо.

Ответ №1:

Короткий ответ таков :

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

Позвольте мне уточнить…

lista является ли массив «Carteras«, который содержит массив «Saldo«, чтобы вы 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);  

Комментарии:

1. о, хорошее, умное использование .some()

2. @AndresGuillenHernandez не стесняйтесь отмечать это как свой ответ, если это поможет вам. Спасибо