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

我有一个对象的数组:

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

如何获得数组按照属性名称(array[i][1])升序进行sorting?

我试图做到这一点: array[i][1].sort() ,但不起作用。

请帮帮我!

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

编辑:为什么这个问题被标记为重复,当“复制”问题提前两年被问及?

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

sort函数需要一个额外的参数,一个函数接受两个参数。 这个函数应该返回-1或者1这取决于两个参数中的哪一个应该在sorting中首先出现。 更多信息 。

我还修复了multidimensional array中的语法错误。

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

sort方法包含一个可选的参数来传递一个自定义比较函数。

假设你想要一个数组数组:

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

否则,如果你想要一个对象数组,你可以这样做:

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

好吧,看起来不是创build一个真正的multidimensional array,而是创build了一个(几乎)JavaScript对象数组。 尝试像这样定义你的数组 – >

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

希望有帮助!