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);
}
});
})
});
我找不到正确的文档来表明即使我在最后一个循环中传递 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>
我在循环中有一个混乱的循环。最内层的循环需要根据对象集合检查 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);
}
});
})
});
我找不到正确的文档来表明即使我在最后一个循环中传递 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>