Javascript compare()-方法在Chrome上的行为很奇怪,为什么?
我只是不知道为什么我的排序算法在Safari和Firefox上运行良好,但在Chrome上却不行 我试图做的是,根据项目类型属性在sortingOrder数组中的顺序对项目(a和b)进行排序。此外,在给定项目类型的每组项目中,可见项目应排在第一位,不可见项目应排在后面 条目类型的排序在任何地方都很好,但是Chrome总是混淆可见和不可见的条目 有人知道为什么吗 很长一段时间都没有感觉到Javascript compare()-方法在Chrome上的行为很奇怪,为什么?,javascript,arrays,google-chrome,sorting,jquery-ui-sortable,Javascript,Arrays,Google Chrome,Sorting,Jquery Ui Sortable,我只是不知道为什么我的排序算法在Safari和Firefox上运行良好,但在Chrome上却不行 我试图做的是,根据项目类型属性在sortingOrder数组中的顺序对项目(a和b)进行排序。此外,在给定项目类型的每组项目中,可见项目应排在第一位,不可见项目应排在后面 条目类型的排序在任何地方都很好,但是Chrome总是混淆可见和不可见的条目 有人知道为什么吗 很长一段时间都没有感觉到 SomeClass.prototype.sortItems = function () { var
SomeClass.prototype.sortItems = function ()
{
var self = this;
this.items.sort(function(a, b) { return self.compare(a, b); });
};
SomeClass.prototype.compare = function (a, b)
{
if (a.itemType == b.itemType)
return (!a.visible && b.visible)? 1 : (a.visible && !b.visible)? -1 : 0;
else
return this.sortingOrder.indexOf(a.itemType) - this.sortingOrder.indexOf(b.itemType);
};
有一个你的物品不起作用的例子吗?哦,对不起,我可能应该说我使用的是Phaser游戏引擎。项是扩展Phaser.Image的类的实例。它们确实有“visible”和“itemType”属性,我已经将它们记录在该方法中,以确保它们设置正确。请尝试运行一个小示例和控制台日志a、b,以及您将在compare方法中返回的内容,以检查它是否真正返回了它应该返回的内容