对项目数组(具有X/Y属性)进行排序,以便从左到右,从上到下排序

Chr*_*ris 3 javascript arrays sorting algorithm actionscript-3

舞台上阵列中的每个项目,每个项目都有一个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]);
}
Run Code Online (Sandbox Code Playgroud)

但这并没有产生正确的结果.

Ric*_*asi 7

sort()应该返回一个0或负数/正数.

这取决于X优先顺序:

function sortByPosition(a, b){
  if (a.x == b.x) return a.y - b.y;
  return a.x - b.x;
}
Run Code Online (Sandbox Code Playgroud)

这具有Y优先权("自然"顺序):

function sortByPosition(a, b){
  if (a.y == b.y) return a.x - b.x;
  return a.y - b.y;
}
Run Code Online (Sandbox Code Playgroud)

这意味着你只需要更换你&&||:

return a.x - b.x || a.y - b.y
Run Code Online (Sandbox Code Playgroud)

  • 无法解决某些情况下X较小但Y不是的空间问题 (2认同)