我有一个数据,其中Report
的数组为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
属性?
答案 0 :(得分:1)
您可以使用嵌套的Array.some()
。当内部谓词返回true
时,两个循环将结束,并返回true
。
示例(未经测试):
if(vm.report.Expenses.some(e =>
e.Returns.some(x => x.ExpenseReportId === vm.report.Id)
)) {
text = 'Process';
}