所以我有这样的用户数组看起来像这样:
[{
userName: 'Jim',
roles: ['Member']
}, {
userName: 'Adam',
roles: ['Administrator']
}, {
userName: 'Suzy',
roles: ['SuperUser']
}, {
userName: 'Greg',
roles: ['SuperUser']
}, {
userName: 'Ady',
roles: ['Administrator']
}, {
userName: 'Jeremy',
roles: ['Administrator']
}]
我想按照它的角色对这个数组进行排序。 我试过这样做:
items.sort(function (a, b) {
var aValue = a.roles[0];
var bValue = b.roles[0];
if (aValue < bValue) return -1;
if (aValue > bValue) return -1;
return 0;
});
但它并没有达到我的预期。有谁知道如何解决这个问题?
答案 0 :(得分:1)
您可以在sort()
内使用localeCompare
方法进行字符串比较。
var data = [{"userName":"Jim","roles":["Member"]},{"userName":"Adam","roles":["Administrator"]},{"userName":"Suzy","roles":["SuperUser"]},{"userName":"Greg","roles":["SuperUser"]},{"userName":"Ady","roles":["Administrator"]},{"userName":"Jeremy","roles":["Administrator"]}]
data.sort(function(a, b) {
return a.roles[0].localeCompare(b.roles[0])
})
console.log(data)
&#13;
答案 1 :(得分:0)
试一试
function SortByRole(a, b){
var aRole = a.roles[0];
var bRole = b.roles[0];
return ((aRole < bRole) ? -1 : ((aRole > bRole) ? 1 : 0));
}
array.sort(SortByRole);