舞台上数组中的每个项目,每个项目都有一个 x/y 位置。最左上角的项目应该是项目[0]。 X应该是主要的。
最初我是这样想的:
var items = [m1, m2, m3, m4, m5, m6];
items.sort(sortMe);
function sortMe(a, b)
{
return (b.position[0] - a.position[0]) && (b.position[1] - a.position[1]);
}
但这不会产生正确的结果。
最佳答案
sort()
应返回 0
或负数/正数。
这以 X
优先排序:
function sortByPosition(a, b){
if (a.x == b.x) return a.y - b.y;
return a.x - b.x;
}
Y
优先(“自然”顺序):
function sortByPosition(a, b){
if (a.y == b.y) return a.x - b.x;
return a.y - b.y;
}
这意味着您只需要用 ||
替换您的 &&
:
return a.x - b.x || a.y - b.y
关于javascript - 对项目数组(具有 X/Y 属性)进行排序,使它们从左到右、从上到下排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8110320/