多排序多维数组

var availableTags = [ {value:"fruit",desc:"fruit",groupId:2,userId:4}, {value:"aGan",desc:"normal user",groupId:4,userId:5}, {value:"father's home ",desc:"normal user",groupId:2,userId:4} ].sort(function(a, b) { return a.groupId > b.groupId; }); 

这是按groupId字段排序,但我如何按groupIdvalue排序?

将return语句更改为

 return a.groupId > b.groupId || (a.groupId == b.groupId && a.value > b.value); 

怎么样

 .sort(function (a, b) { var firstGroupId = a.groupId; var secondGroupId = b.groupId; return (firstGroupId === secondGroupId) ? a.value > b.value : firstGroupId > secondGroupId; }); 

Javascript多标准排序

如果你想按groupIdvalue排序,你可以使用我在下面粘贴的sort函数(JsFiddle: http : //jsfiddle.net/oahxg4u3/6/ )。 此排序函数还可用于按n值或单个值排序。

限定:

 function sortByCriteria(data, criteria) { return data.sort(function (a, b) { var i, iLen, aChain, bChain; i = 0; iLen = criteria.length; for (i; i < iLen; i++) { aChain += a[criteria[i]]; bChain += b[criteria[i]]; } return aChain.localeCompare(bChain); }); } 

调用:

 var data = [ {value:"fruit", desc:"fruit", groupId:2, userId:4}, {value:"aGan", desc:"normal user", groupId:4, userId:5}, {value:"father's home ", desc:"normal user", groupId:2, userId:4} ]; var criteria = ["groupId", "value"]; sortByCriteria(data, criteria);