#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 не стесняйтесь отмечать это как свой ответ, если это поможет вам. Спасибо