检查对象数组以查看特定属性是否符合条件

时间:2018-12-21 21:50:32

标签: javascript ecmascript-6

我有一个数据,其中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";
  }
};

但是,这感觉像是一种古老的处理方式。我尝试过concatmap等,但似乎无法理解。我只想要这样的东西:

if (report.Expenses.Returns.some(x => ...))

我不能这样做,因为Expenses是一个数组,Returns也是如此。如何轻松检查Returns的所有Expense属性上的所有Report属性?

1 个答案:

答案 0 :(得分:1)

您可以使用嵌套的Array.some()。当内部谓词返回true时,两个循环将结束,并返回true

示例(未经测试):

if(vm.report.Expenses.some(e => 
  e.Returns.some(x => x.ExpenseReportId === vm.report.Id)
)) {
  text = 'Process';
}