【问题标题】:How to sort Array by alpha of a specific key inside each object?如何按每个对象内特定键的 alpha 对数组进行排序?
【发布时间】:2016-06-23 14:13:38
【问题描述】:

我的数组示例 =

[{
    name: leon,
    id: 1
}, {
    name: laura
    id: 20003
}, {
    name: anne
    id: 45
}]

当前在 UI 中,数组将如下所示:

  • 里昂
  • 劳拉
  • 安妮

如何使用lodash 按字母顺序按name 键对数组进行排序?

【问题讨论】:

标签: javascript arrays sorting lodash


【解决方案1】:
_.sortBy(myObjects, 'name');

名称是这里的排序键

【讨论】:

  • 谢谢!这比普通的 JavaScript 方式更容易阅读和理解
  • 顺便说一句,我也刚刚发现这可行:namesArray = _.orderBy(res, ['name'], ['asc', 'desc']);
【解决方案2】:

您可以使用适当的回调。

var array = [{ name: 'leon', id: 1}, { name: 'laura', id: 20003}, { name: 'anne', id: 45}];

array.sort(function (a, b) {
    return a.name.localeCompare(b.name);
});

console.log(array);

【讨论】:

    【解决方案3】:

    您不需要 lodash 来执行此操作...

    就做吧

    var sortedNames = names.sort(function(a, b) {
      return a.name.localeCompare(b.name);
    });
    

    jsFiddle: https://jsfiddle.net/p07c4oaa/

    或将其包装在如下函数中:

    function sortBy(obj, key) {
      return obj.sort(function(a, b) {
        return a[key].localeCompare(b[key]);
      });
    }
    

    jsFiddle: https://jsfiddle.net/p07c4oaa/1/

    【讨论】:

    • @NinaScholz 我使用了赋值,因为我有不同的变量名。但当然没有也可以。
    • 谢谢! +1,我一直在寻找 lodash 解决方案的原因是因为他们的 API 更容易被其他开发人员快速推理。
    • @LeonGaban 没有问题。请记住,添加 lodash 来完成如此简单的任务可能会过大并减慢您的应用程序的速度。
    【解决方案4】:

    不确定 loadash 但您可以使用简单的sort 方法对对象的 json 数组进行排序

    var arry=[{
        name: 'leon',
        id: 1
    }, {
        name: 'laura',
        id: 20003
    }, {
        name: 'anne',
        id: 45
    }]
    var sorted = arry.sort(function(a,b){
    return a.name > b.name ? 1:-1
    })
    // this part just for demo
    
    sorted.forEach(function(item){
    document.write('<pre>'+item.name+'</pre>')
    
    })
    

    JSFIDDLE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多