Javascript 对属性数组进行排序

标签 javascript arrays

所以我有一组看起来像这样的用户:

[{
    userName: 'Jim',
    roles: ['Member']
}, {
    userName: 'Adam',
    roles: ['Administrator']
}, {
    userName: 'Suzy',
    roles: ['SuperUser']
}, {
    userName: 'Greg',
    roles: ['SuperUser']
}, {
    userName: 'Ady',
    roles: ['Administrator']
}, {
    userName: 'Jeremy',
    roles: ['Administrator']
}]

我想按 Angular 色对这个数组进行排序。 我尝试这样做:

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

但它没有达到我的预期。有谁知道如何解决这个问题吗?

最佳答案

您可以使用localeCompare sort() 中字符串比较的方法。

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)

关于Javascript 对属性数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44441940/

相关文章:

javascript - 在 PhantomJS 预构建中设置浏览器时区

javascript - 如何使用 $sce 插入带有 angular.js 的 iframe?

javascript - 循环中的 addEventHandler() 有意外结果

Javascript 数组效率低下的问题

Java:从多个数组中的重复项获取平均时间

javascript - 在弹出窗口中显示带有 Ajax 数据源的 jQuery DataTables

winapi - 如何在 JAVAScript 中调用 Windows API 函数?

c++ - cin.getline() 没有将\0 添加到数组 C++ 的末尾

在 Ansi C 中使用 toString 转换数字

javascript - 将多维数组转换为特定的字符串格式