我有一个对象数组:

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

我如何让数组在属性名称(数组[I][1])升序排序?

我已经尝试这样做:数组[I][1].sort(),但这并不奏效。

请帮帮我!

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

编辑: 为什么这个问题被标记为重复的,而这个问题是在“重复”问题的2年前问的?


当前回答

好吧,它似乎不是创建一个真正的多维数组,而是创建了一个(几乎)JavaScript对象数组。试着像这样定义数组——>

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

希望这有帮助!

其他回答

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

好吧,它似乎不是创建一个真正的多维数组,而是创建了一个(几乎)JavaScript对象数组。试着像这样定义数组——>

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

希望这有帮助!