Como ordenar uma matriz de objects com jquery ou javascript

Eu tenho uma matriz de objects:

var array = [(id, name, value),(id, name, value)]; //and so on 

Como faço para que o array seja classificado em ordem crescente do nome do atributo (array[i][1]) ?

Eu tentei fazer isso: array[i][1].sort() , mas isso não funciona.

Por favor me ajude!

Edit: o array pode conter mais de dois objects! Pode conter centenas.

Edit: Por que esta questão está marcada como uma duplicata, quando foi perguntado 2 anos antes da pergunta “duplicada”?

   
     //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); 
     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; } }); 

    A function de sort leva um argumento adicional, uma function que leva dois argumentos. Esta function deve retornar -1 , 0 ou 1 dependendo de qual dos dois argumentos deve vir primeiro na sorting. Mais informações .

    Eu também consertei um erro de syntax em seu array multidimensional.

     //objects var array = [{id:'12', name:'Smith', value:1},{id:'13', name:'Jones', value:2}]; array.sort(function(a, b){ var a1= a.name.toLower(), b1= b.name.toLower(); if(a1== b1) return 0; return a1> b1? 1: -1; }); //arrays var array =[ ['12', ,'Smith',1],['13', 'Jones',2]]; array.sort(function(a, b){ var a1= a[1], b1= b[1]; if(a1== b1) return 0; return a1> b1? 1: -1; }); 
     data.sort(function(a,b) { return a.val - b.val; }); 

    o método de sorting contém um argumento opcional para passar uma function de comparação personalizada.

    Supondo que você queria uma matriz de matrizes:

     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); 

    Caso contrário, se você quisesse uma variedade de objects, você poderia fazer:

     function compareName(a, b) { if (a.name < b.name) return -1; if (a.name > b.name) return 1; return 0; } 

    Bem, parece que, em vez de criar uma multidimensional array verdadeira, você criou uma matriz de (quase) objects JavaScript. Tente definir suas matrizes assim ->

     var array = [ [id,name,value], [id,name,value] ] 

    Espero que isso ajude!