Javascript数组排序和拼接

时间:2013-12-23 09:32:44

标签: javascript arrays sorting cocos2d-iphone box2d

我正在制作游戏,我需要精灵才能找到最接近的食物"走向他们。我无法找到正确的代码来实现这一目标。他们似乎得到了第一种食物,但是当有多种食物时,精灵在每种食物之间都是优柔寡断的,并且不足以吃任何食物。仍然没有多少经验可以理解阵列。

我正在使用cocos2d框架。

update:function (dt) {

for (var i = 0; i < this._gubz.length; i++)
    {
        var gub = this._gubz[i];
        if (this._food.length>0)
            {
            var distances = new Array();

                 for (var w = 0; w < this._food.length; w++)
                 {
                 var food = this._food[w];
                 var location = food.getPosition();
                 var distance = cc.pDistance(location,gub.getPosition());
                 }

            var smallestDistance = Math.min.apply(Math,distances);
            var indexOfNumber = distances.indexOf(smallestDistance);
            var closestFood = this._food[indexOfNumber];

            gub.currentTarget = indexOfNumber;

            }
       }

       for (var i = 0; i < this.foodToRemove.length; i++)
        {
            this.removeChild(this.foodToRemove[i].GetUserData());
            this._food.splice(this._food.indexOf(this.foodToRemove[i].GetUserData()),1)
            this.world.DestroyBody(this.foodToRemove[i]);

        }



  }

1 个答案:

答案 0 :(得分:0)

如果要对javascript数组应用排序,请使用排序变量。

this._food = this._food.sort(function(a, b) {
    return a.smallestDistance > b.smallestDistance ? -1 : a.smallestDistance < b.smallesDistance ? 1 : 0;
});

删除项目使用过滤器项目:

this._food = this._food.filter(function(element) {
    return elementDoesNotExist(element);
});

应该让你开始。

HTH