Javascript 数组推送生成意外的数组

Javascript 数组推送生成意外的数组,javascript,angularjs,arrays,Javascript,Angularjs,Arrays,我希望是一个简单的问题(不确定我遗漏了什么) 如何将项目推送到基本数组而不是索引数组 执行此操作时: var shops = []; angular.forEach(data, function(value, index) { //loop over data shops.push(value.SHOP_CODE); }); 当您将shops数组记录到console时,该数组可能为空,因此显示为数组[0] 单击数组[0]旁边的下拉箭头时,将再次计算数组的内容。因此,在单击下拉

我希望是一个简单的问题(不确定我遗漏了什么)

如何将项目推送到基本数组而不是索引数组

执行此操作时:

var shops = [];     
angular.forEach(data, function(value, index) { //loop over data
    shops.push(value.SHOP_CODE);
});

当您将shops数组记录到console时,该数组可能为空,因此显示为数组[0]

单击数组[0]旁边的下拉箭头时,将再次计算数组的内容。因此,在单击下拉列表时,数组不是空的,因此显示4个元素

如果在执行console.log(shops)操作时数组不是空的,那么您将得到所需的结果


我建议您在statement console.log(shops)中添加一个断点,并检查数组的内容。

多亏了@Patrick Evans和@SLePort,我意识到我需要等待承诺。这项工作:

.$promise.then(function(data) {
   $scope.workOrder = data;
       angular.forEach(data, function(value, index) { //loop over aircraft data
                        shops.push(value.SHOP_CODE);
                });
           shops.sort();
           console.log(shops);
          });

这是同一件事,这是同一件事。注意,在填充该数组之前,您可能已经记录了该数组(这就是为什么您得到
array[0]
因为它当时没有长度。但是当你去控制台查看它时,它已经填满了。当数组更新时,记录的数组的初始行不会更新。我认为你是正确的。我返回了一个承诺,而且返回的速度可能不够快。绞尽脑汁-谢谢。JavaScript数组总是使用编号索引.谢谢@shriharska。事实上,我没有等待承诺的回归,阵列也没有完全填满。