如何使用jquery或javascript对对象数组进行排序

如何使用jquery或javascript对对象数组进行排序,javascript,jquery,sorting,multidimensional-array,Javascript,Jquery,Sorting,Multidimensional Array,我有一个对象数组: var array = [(id, name, value),(id, name, value)]; //and so on 如何使数组按atribute名称的升序排序(数组[I][1]) 我尝试过这样做:array[I][1].sort(),但不起作用 请帮帮我 编辑:数组可以包含两个以上的对象!它可以包含数百个 编辑: 为什么这个问题被标记为重复的,当它在“重复的”问题出现两年前被问到时?好吧,看起来你没有创建一个真正的多维数组,而是创建了一个(几乎)JavaScrip

我有一个对象数组:

var array = [(id, name, value),(id, name, value)]; //and so on
如何使数组按atribute名称的升序排序
(数组[I][1])

我尝试过这样做:
array[I][1].sort()
,但不起作用

请帮帮我

编辑:数组可以包含两个以上的对象!它可以包含数百个

编辑:
为什么这个问题被标记为重复的,当它在“重复的”问题出现两年前被问到时?

好吧,看起来你没有创建一个真正的多维数组,而是创建了一个(几乎)JavaScript对象的数组。尝试这样定义数组->

var array = [ [id,name,value], [id,name,value] ]
希望这有帮助

//这将对数组进行排序
//This will sort your array
function SortByName(a, b){
  var aName = a.name.toLowerCase();
  var bName = b.name.toLowerCase(); 
  return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));
}

array.sort(SortByName);
函数SortByName(a,b){ var aName=a.name.toLowerCase(); var bName=b.name.toLowerCase(); 返回((aNamebName)?1:0)); } sort(SortByName);
包含用于传递自定义比较函数的可选参数

假设您需要一组数组:

var arr = [[3, "Mike", 20],[5, "Alex", 15]];

function compareName(a, b)
{

  if (a[1] < b[1]) return -1;
  if (a[1] > b[1]) return 1;
  return 0;
}
arr.sort(compareName);
var arr=[[3,“迈克”,20],[5,“亚历克斯”,15];
函数比较名(a,b)
{
如果(a[1]b[1])返回1;
返回0;
}
arr.sort(compareName);
否则,如果需要对象数组,可以执行以下操作:

function compareName(a, b)
{

  if (a.name < b.name) return -1;
  if (a.name > b.name) return 1;
  return 0;
}
函数比较名(a,b)
{
如果(a.nameb.name)返回1;
返回0;
}
sort
函数接受一个附加参数,一个接受两个参数的函数。此函数应返回
-1
0
1
,具体取决于排序中两个参数中的哪一个应排在第一位


我还修复了多维数组中的语法错误。

您有二维数组还是对象数组?以上内容在我看来更像是一个对象数组。
{id,name,value}
无效syntax@Sime很抱歉语法,我当时不记得了。@Chris是的,当我想到它时,它实际上是一个对象数组。很抱歉,我在这里同时处理多个任务,所以有时我会有点困惑。关于你关于重复标记的问题:另一个问题是在2009年提出的,请看。正是我在寻找的,谢谢!已知在某些浏览器下会出现这种情况。我在一个项目中使用IE8,但它不适用于这种情况。@PaolodelMundo我们有使用IE7/8/9的用户。我们对这段代码没有任何问题。你能提供更多关于你的代码的信息吗?我唯一能想到的就是a.name.toLowerCase()。我将使用jQuery选择器;我只对短数组进行排序。@Jackson在忽略case.Life-saver的情况下对数组进行排序!有没有办法让元素变得动态?所以'array.sort(函数(a,b,element){var a1=a.element,b1=b.element;'等等。。。
data.sort(function(a,b) 
{
   return a.val - b.val;
});
var array = [[1, "grape", 42], [2, "fruit", 9]];

array.sort(function(a, b)
{
    // a and b will here be two objects from the array
    // thus a[1] and b[1] will equal the names

    // if they are equal, return 0 (no sorting)
    if (a[1] == b[1]) { return 0; }
    if (a[1] > b[1])
    {
        // if a should come after b, return 1
        return 1;
    }
    else
    {
        // if b should come after a, return -1
        return -1;
    }
});
data.sort(function(a,b) 
{
   return a.val - b.val;
});