-1

我需要以特定顺序处理大量对象(在这种情况下,是游戏中的精灵),由它们的一个属性(在这种情况下,精灵的 )决定。我以随机的顺序一个接一个地获取对象,但离完美的对象不远。zIndex

目前,我天真地将我获取的每个对象推送到一个数组中,并在操作之前对其进行排序(使用orderByAngularJS 的过滤器)。但是操作真的很慢(占总计算时间的 50%)。我能做些什么来加快这个过程?

我尝试使用稀疏数组,其键是zIndex我的对象,但出于一个神秘的原因:

  • angular.forEach在稀疏数组上真的很慢,
  • 当我使用循环遍历数组时,似乎没有保留顺序for ... in
4

2 回答 2

1

怎么用array.sort()。你越接近原生浏览器 JavaScript,你就会越快。

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

于 2013-11-11T22:09:58.430 回答
0

我不会使用for ... in循环。来自 Mozilla:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

Iterates over the enumerable properties of an object, in arbitrary order.

for ... in通常会按照定义数组属性的顺序遍历数组,这就是排序不起作用的原因。不确定它是否会解决您的问题,但这样做var i = 0, l = items.length; for (; i < l; i++) { // do stuff }会保留数组顺序,并且很可能是使用本机 javascript 的最快方式。

如果这是您面临的唯一问题,并且使用稀疏数组可以解决此问题,那么应该没问题。

于 2013-11-11T22:15:37.527 回答