javascript - 对项目数组(具有 X/Y 属性)进行排序,使它们从左到右、从上到下排序

标签 javascript arrays actionscript-3 algorithm sorting

舞台上数组中的每个项目,每个项目都有一个 x/y 位置。最左上角的项目应该是项目[0]。 X应该是主要的。

enter image description here

最初我是这样想的:

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/

相关文章:

javascript - 为什么在使用 "this"声明属性时不需要 const 或 let ?

javascript - 是否可以解释 C# 表达式树以发出 JavaScript?

actionscript-3 - Away3D Stage3DProxy 绘制顺序

actionscript-3 - 在 swc-library (actionscript3) 中停止跟踪

javascript - 使用 Ajax 调用的结果更新 div

javascript - 如何打印以筛选存储在本地存储中的所有数组元素

java - 数组和扩展的困境

c# - 排序数组 C# : key array changes unintendedly

c++ - 没有 new 的动态数组 (C++)

actionscript-3 - 使用 ActionScript 拆分 H.264