Jquery 对象的每次迭代

Jquery each iteration of object

我在循环中有一个混乱的循环。最内层的循环需要根据对象集合检查 id。集合中的每个对象都有一个 employee_id 和一个 team_id:

我可以将它拉入 jQuery 函数中。我通常在 each 语句中使用键值对:

$.each(teamIds, function(innerKey, id) {
      if(id === somevar){ ... etc }
}

对于这个数组集合,我需要捕获 team_id 以与更高级别的循环进行比较,然后如果为真,则将 employee_id 存储在同一循环中。这不适用于 key/value 对,因为它们将显示 team_id 及其 id,然后在下一个循环中显示 employee_id。因此,我在最后一个循环中使用了该对象,并且 假设它正在被迭代。

以下完美运行:

$.each(empListTeam, function(key, arrayOfTeamAndEmp) {
     $.each(teamIds, function(innerKey, id) {
           $.each(arrayOfTeamAndEmp, function(key2, value) {
              if (key2 === 'team_id' && parseInt(id) === value) {
                 appliedEmpIds.push(arrayOfTeamAndEmp.employee_id);
              }
           });
     })
});

我找不到正确的文档来表明即使我在最后一个循环中传递 key2valuearrayOfTeamAndEmp 正在迭代,我正确地执行此操作。这是正确的,还是我会遇到这个烂摊子的问题?或者...我只是完全错过了一个明显更好的构建方法吗?

我还不能完全确定你的脚本的目的是什么。但是,如果您想以一种将 employee_ids 作为团队成员的数组的方式收集和重组数据,则可以执行以下(简化的)单循环版本:

var appliedEmpIds={};
var coll={items:[
 {team_id:1,employee_id:2},
 {team_id:1,employee_id:3},
 {team_id:2,employee_id:4},
 {team_id:2,employee_id:5},
 {team_id:2,employee_id:6},
 {team_id:3,employee_id:7}
]};
$.each(coll.items,function(i,o){
  (appliedEmpIds[o.team_id]=appliedEmpIds[o.team_id] || []).push(o.employee_id);
});
console.log('jQuery:',appliedEmpIds);

// you can do the same also in Vanilla JS as

var aei={};
coll.items.forEach(function(o,i){
  (aei[o.team_id]=aei[o.team_id] || []).push(o.employee_id);
});
console.log('Vanilla:',aei);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>