左から右、上から下に並べるように(X/Yプロパティを持つ)アイテムの配列をソートする

配列内の各アイテムはステージ上にあり、それぞれ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() should return either 0 or a
negative/positive number.

これは 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;
}

Which means you just need to replace your &&
with ||:

return a.x - b.x || a.y - b.y

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です