代码之家  ›  专栏  ›  技术社区  ›  Tales

如何对具有key属性的对象数组进行排序?[副本]

  •  1
  • Tales  · 技术社区  · 5 年前

    我的对象数组如下所示:

    var array = [
      {
         'version2': {
            name: 'abc'
         }
      }, 
      {
         'version1': {
            name: 'xyz'
         }
      }
    ]
    

    预期输出如下:

    var array = [
      {
         'version1': {
            name: 'xyz'
         }
      }, 
      {
         'version2': {
            name: 'abc'
         }
      }
    ]
    

    var abc = array.sort(function(a, b){return Object.keys(a)[0] - Object.keys(b)[0]});
    console.log(abc);
    

    2 回复  |  直到 5 年前
        1
  •  2
  •   brk    5 年前

    您可以使用localeCompare。假设每个对象只有一个键

    var array = [{
        'version2': {
          name: 'abc'
        }
      },
      {
        'version1': {
          name: 'xyz'
        }
      }
    ]
    const sorted = array.sort((a, b) => {
      return Object.keys(a)[0].localeCompare(Object.keys(b)[0])
    });
    console.log(sorted)
        2
  •  0
  •   saeedkazemi    5 年前

    更改此行(比较表达式):

    var abc = array.sort(function(a, b){return (Object.keys(a)[0] > Object.keys(b)[0])? 1: -1});
    

    或者只是:

    var abc = array.sort((a, b) => (Object.keys(a)[0] > Object.keys(b)[0])? 1: -1);