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 有什么想法可以解决这个问题吗?
提前致谢。
解决方案
简短的回答是:
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);
推荐阅读
- pandas - 如果不完全重复,则以不同颜色突出显示单元格
- google-chrome - 从 Visual Basic 关闭 chrome 配置文件
- javascript - 无法从联系表单向 Firebase 提交数据
- android - 如何更改 Android EditText 视图上 blob 的颜色?
- python - 尝试使用 python-ldap ldifparser 解析 ldif 文件
- typescript - 重载签名不兼容函数实现没有意义
- javascript - 如何使 Chrome 92 从不同子域上打开的 iframe 显示 alert()、prompt() 和 confirm()
- python - 我收到 ERROR: AttributeError at /customer/5/ type object 'Customer' has no attribute 'orderitem_set'
- python - 如何在 KivyMD 的 .kv 文件中使用 kivy 中的数据表?
- php - 用于编辑和添加送货地址的 Woocommerce 简码