Javascript 前额角

Javascript 前额角,javascript,angularjs,foreach,Javascript,Angularjs,Foreach,我有一件物品,里面有很多物品。 此对象由lotId索引 var lots = { 800: { lotId: 800, ... }, 801: { lotId:801, ... } } 当我用angular.forEach在对象中循环时,我在控制台中记录每个批次的lotId angular.forEach(db.lots, function (lot) { console.log(lot.l

我有一件物品,里面有很多物品。 此对象由lotId索引

var lots = {
    800: {
        lotId: 800,
        ...
    },
    801: {
        lotId:801,
        ...
    }
}
当我用angular.forEach在对象中循环时,我在控制台中记录每个批次的lotId

angular.forEach(db.lots, function (lot) {
    console.log(lot.lotId);
})
console.log('forEach finished');
正如我们所看到的,批次集合长度为821,对象中的最后一个批次为lotId 1768

当此代码运行时,它只打印到lotId 820:

所以最后一个日志应该是1768,我不知道为什么它停在洛蒂德820(对我来说,这是一个很大的巧合,很多长度[821])

使用本机for in循环的另一种方法:

for (var lotId in db.lots) {
    if (!db.lots.hasOwnProperty(lotId)) continue;
    console.log(lotId);
}
console.log('forEach finished');
然后我们得到了我想要的结果:

注意事项:

  • 我使用相同的angular.forEach方法处理相同但较小的批次集合(长度为768),效果良好
  • 在lots集合中添加了大约100个lots,之后我使用的angular.forEach函数停止正常工作
  • 控制台中没有错误

有什么想法吗?

制作一个演示,复制问题。请注意,对象不像数组那样具有顺序。还有,
Object.keys(db.lots.length)
返回什么?听起来它不是打印批次id,而是打印对象键