javascript - 检查对象数组以查看特定属性是否与条件匹配
问题描述
我有数据,其中 aReport
有一个数组Expenses
,每个Expense
数组都有一个Returns
. 我想检查每一个Return
,看看它是否满足某个条件。这有效:
for (var expense of vm.report.Expenses) {
if (text === "Process") { break; }
if (expense.Returns.some(x => x.ExpenseReportId === vm.report.Id)) {
text = "Process";
}
};
然而,这感觉像是一种古老的做事方式。我试过concat
,map
等,但似乎无法得到它。我只想要这样的东西:
if (report.Expenses.Returns.some(x => ...))
我不能这样做,因为Expenses
它是一个数组,而Returns
. 如何轻松检查所有Returns
属性的所有Expense
属性Report
?
解决方案
您可以使用嵌套的Array.some()
. 当内部的谓词 some 返回时true
,两个 some 循环都将结束并返回true
。
示例(未测试):
if(vm.report.Expenses.some(e =>
e.Returns.some(x => x.ExpenseReportId === vm.report.Id)
)) {
text = 'Process';
}
推荐阅读
- gradle - Kotlin Native Cocoapods 插件 - 如何指定 Podspec 源?
- python - 正方体边界框距离计算
- amazon-web-services - DynamoDB 获取排序键中的对象计数
- highcharts - Highcharts pie/variablepie在plotedge上对齐多线标签
- laravel - Laravel 按关系字段过滤项目
- visual-studio-code - 你如何防止vscode插入额外的空格
- vaadin-grid - 移动设备上的 Vaadin 14 网格列宽
- flutter - 基本社交媒体集成,Flutter Web
- javascript - NPM 包在全局范围内扩展接口。如何覆盖此类型定义?
- javascript - 根据属性显示文本