【问题标题】:How to sort a multidimensional array by name [duplicate]如何按名称对多维数组进行排序[重复]
【发布时间】:2014-02-03 08:48:04
【问题描述】:
var items = [
    {
        "id": 376,
        "name": "b"
    },
    {
        "id": 253,
        "name": "f"
    },
    {
        "id": 236,
        "name": "c"
    },
    {
        "id": 235,
        "name": "e"
    },
    {
        "id": 165,
        "name": "a"
    },
    {
        "id": 26,
        "name": "d"
    },
    {
        "id": 24,
        "name": "d"
    }
]

如何按名称对数组进行排序?

【问题讨论】:

  • 这不是一个多维数组。这是一个对象数组。

标签: jquery arrays sorting


【解决方案1】:

既然你用的是字符串试试

items.sort(function (o1, o2) {
    return o1.name.localeCompare(o2.name)
});
console.log(items)

【讨论】:

    【解决方案2】:

    有一个很好的按键排序的例子here.

    该答案中给出的示例如下所示:

    items.sort(function(a, b){
        var keyA = new Date(a.name),
        keyB = new Date(b.name);
        // Compare the 2 dates
        if(keyA < keyB) return -1;
        if(keyA > keyB) return 1;
        return 0;
    });
    

    【讨论】:

    • 那么复制粘贴而不是标记为重复有什么意义呢?
    • 如果是我,我希望答案正好在我问的问题之下。我也从那个问题更改了密钥的名称。所以放松。
    【解决方案3】:

    这是一个对象数组。您需要编写自己的比较函数。

    function compare(a,b) {
      if (a.name < b.name)
      {
          return -1;
      }
      if (a.name > b.name)
      {
          return 1;
      }
    
      return 0;
    }
    

    然后像这样排序:

    items.sort(compare);
    

    【讨论】:

      【解决方案4】:

      给你:

      function byName(a, b){
        var nameA = a.name.toLowerCase();
        var nameB = b.name.toLowerCase(); 
        return ((nameA < nameB) ? -1 : ((nameA > nameB) ? 1 : 0));
      }
      
      array.sort(byName);
      

      更多关于.sort()

      【讨论】:

        【解决方案5】:

        你可以使用这个简单的代码:

        myarray.sort(function(a, b){
            var keyA = new Date(a.updated_at),
            keyB = new Date(b.updated_at);
            // Compare dates
            if(keyA < keyB) return -1;
            if(keyA > keyB) return 1;
            return 0;
        });
        

        【讨论】:

          【解决方案6】:

          这可以工作

          function SortByName(a, b){
            var aName = a.id;
            var bName = b.id; 
            return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));
          }
          
          items.sort(SortByName)
          

          【讨论】:

            猜你喜欢
            • 2021-05-08
            • 1970-01-01
            • 1970-01-01
            • 2020-10-11
            • 2018-09-22
            • 2018-02-01
            • 2011-09-03
            • 2012-07-18
            相关资源
            最近更新 更多