首页 > 解决方案 > 检查对象数组以查看特定属性是否与条件匹配

问题描述

我有数据,其中 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

标签: javascriptecmascript-6

解决方案


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

示例(未测试):

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

推荐阅读