在Angularjs中使用foreach循环时如何保持数组顺序

3
我的数组在使用foreach循环时总是改变顺序。如何保持数组的顺序?
var array1 = [{id:1, name:'foo'},{id:2, name:'bar'},{id:3, name:'lol'}]

在我使用foreach循环并将其输出到新数组后,顺序有时会发生变化

var array2 = [];

angular.forEach(array1, function(post) {
  //for brevity i'll just keep it simple
   var sample = {id:post.id, name:post.name};
   array2.push(sample);
});

//OUTPUT
var array2 = [{id:3, name:'lol'},{id:1, name:'foo'},{id:2, name:'bar'}]

我的问题是如何在不改变顺序的情况下进行迭代。


当你使用foreach循环时,什么意思是数组会改变?你是从Web服务获取数组吗? - Endre Simo
是的,我从 AJAX 响应中获取它,但顺序始终相同,只是在 foreach 循环之后变得混乱。 - edmamerto
@JLRishe 我添加了代码。 - edmamerto
3
如果 array1 确实是一个数组,那么这不应该发生。你能给我们展示一下你的服务实际返回的 JSON 响应吗? - JLRishe
在控制台中执行而不使用Angular的forEach版本似乎可以正常工作。你为什么要使用Angular的版本而不是通常的版本?是否有特定的原因? - aug
1个回答

1

遍历数组保证是按照顺序进行的。但字典不是这样的。如果你想创建一个新的数组,你可以简单地这样做:

var array2 = array1.map(function(post) {
    return {id: post.id, name: post.name};
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接