jquery - jquery对象的每次迭代
问题描述
我在一个循环中有一个凌乱的循环。最里面的循环需要检查id
对象集合。集合中的每个对象都有一个employee_id
和一个team_id
:
我可以把它拉到 jQuery 函数中。each
我通常在我的语句中使用键值对:
$.each(teamIds, function(innerKey, id) {
if(id === somevar){ ... etc }
}
使用这个数组集合,我需要捕获team_id
以与更高级别的循环进行比较,然后将其存储employee_id
在同一循环中(如果为真)。这不适用于键/值对,因为它们将显示 ateam_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);
}
});
})
});
我找不到正确的文档来证明即使我正在通过最后一个循环,它key2
正在被迭代,并且我正在正确地执行此操作。这是正确的,还是我会对这个烂摊子有问题?或者......我只是完全错过了一种明显更好的构建方法吗?value
arrayOfTeamAndEmp
解决方案
我还不完全确定你的脚本的目的是什么。但是,如果您想以一种将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>
推荐阅读
- node.js - 如何使用 Nodemailer 在密件抄送中发送电子邮件
- python - pyHook 钩子使输入过于滞后 - 有没有办法优化这些钩子?
- ios - 从 nib 文件所有者加载 ViewController
- datetime - 为什么在 OffsetDateTime 日期格式中使用 'T' - java 8
- html - 固定底部不适用于有溢出的父级
- ios - 当应用程序终止并且它还处于活动状态时,功能不起作用
- wpf - 跟踪命令绑定问题 (WPF)
- meteor - 你如何在 Meteor 中导入“过程”?
- facebook-login - 如何修复错误Facebook登录导致android
- java - 如何以编程方式将静态 html 页面部署到 heroku?