Javascript 按2个属性对对象数组进行排序

Javascript 按2个属性对对象数组进行排序,javascript,jquery,sorting,Javascript,Jquery,Sorting,我有这样一个对象数组: [ {x: 1, y: 4}, {x: 1, y: 2}, {x: 1, y: 3}, {x: 3, y: 4}, {x: 3, y: 2}, {x: 3, y: 9}, {x: 2, y: 5}, {x: 1, y: 0}, {x: 1, y: 2} ] [ {x: 1, y: 2}, {x: 1, y: 3}, {x: 1, y: 4}, {x: 2, y: 0}, {x: 2, y: 2}, {x: 2, y: 5}, {x: 3, y: 2},

我有这样一个对象数组:

[ {x: 1, y: 4}, {x: 1, y: 2}, {x: 1, y: 3},
  {x: 3, y: 4}, {x: 3, y: 2}, {x: 3, y: 9},
  {x: 2, y: 5}, {x: 1, y: 0}, {x: 1, y: 2} ]
[ {x: 1, y: 2}, {x: 1, y: 3}, {x: 1, y: 4},
  {x: 2, y: 0}, {x: 2, y: 2}, {x: 2, y: 5},
  {x: 3, y: 2}, {x: 3, y: 4}, {x: 3, y: 9} ]
我想把它分类如下:

[ {x: 1, y: 4}, {x: 1, y: 2}, {x: 1, y: 3},
  {x: 3, y: 4}, {x: 3, y: 2}, {x: 3, y: 9},
  {x: 2, y: 5}, {x: 1, y: 0}, {x: 1, y: 2} ]
[ {x: 1, y: 2}, {x: 1, y: 3}, {x: 1, y: 4},
  {x: 2, y: 0}, {x: 2, y: 2}, {x: 2, y: 5},
  {x: 3, y: 2}, {x: 3, y: 4}, {x: 3, y: 9} ]
因此,规则是:数组必须首先按
x
属性排序,然后按
y
属性排序必须遵守第一次排序

我该怎么做

我试过:

array.sort(function(a, b){
 var elema = a["x"] ;
 var elemb = b["x"] ;
 if (elema < elemb) 
  return -1;
 if (elema > elemb)
  return 1;
 return 0;
});

array.sort(function(a, b){
 var elema = a["y"] ;
 var elemb = b["y"] ;
 if (elema < elemb) 
  return -1;
 if (elema > elemb)
  return 1;
 return 0;
});
array.sort(函数(a,b){
var elema=a[“x”];
var elemb=b[“x”];
if(elemaelemb)
返回1;
返回0;
});
array.sort(函数(a,b){
var elema=a[“y”];
var elemb=b[“y”];
if(elemaelemb)
返回1;
返回0;
});
但它不能正常工作


谢谢

您必须在一个功能中完成它。
此外,如果
x
值相同,则必须比较
y

你可以这样做

function SortMyObjects(a, b) 
{
   if (a.x < b.x)
      return -1;

   if (a.x > b.x)
      return 1;

   // a.x == b.x so compare y values
   if (a.y < b.y)
      return -1;

   if (a.y > b.y)
      return 1;

   // perfect equality
   return 0;
}

// sort your array
array.sort(SortMyObjects);
函数排序对象(a、b)
{
如果(a.xb.x)
返回1;
//a.x==b.x,因此比较y值
如果(a.yb.y)
返回1;
//完全平等
返回0;
}
//对数组排序
sort(sortmyoobjects);

您可以使用JavaScript库在一行代码中完成此操作。这是一个例子:

var res = alasql('SELECT * FROM ? ORDER BY x,y',[data]);
试试这个例子