Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript或typescript中按键对数组排序,但键是否按字母顺序排序?_Javascript_Arrays_Typescript - Fatal编程技术网

如何在javascript或typescript中按键对数组排序,但键是否按字母顺序排序?

如何在javascript或typescript中按键对数组排序,但键是否按字母顺序排序?,javascript,arrays,typescript,Javascript,Arrays,Typescript,我有这个数组 [ { "Books": [], "_id": "5dea9a11a8e1bf301c462ce4", "FileName": "AAAAA", "Order": 99999 }, { "_id": "5dea9864a8e1bf301c462cdb", "Books": [], "FileName": "some1", "Order": 3 }, { "Books": [],

我有这个数组

[   
  {
    "Books": [],
    "_id": "5dea9a11a8e1bf301c462ce4",
    "FileName": "AAAAA",
    "Order": 99999
  },
  {
    "_id": "5dea9864a8e1bf301c462cdb",
    "Books": [],
    "FileName": "some1",
    "Order": 3
  },
  {
    "Books": [],
    "_id": "5dea9873a8e1bf301c462ce1",
    "FileName": "among3",
    "Order": 3
  },
  {
    "Books": [],
    "_id": "5dea986ba8e1bf301c462cde",
    "FileName": "things2",
    "Order": 2
  },
  {
    "Books": [],
    "_id": "5dea9a18a8e1bf301c462ce7",
    "FileName": "FFFF",
    "Order": 99999
  },
  {
    "Books": [],
    "_id": "5dea9a1ea8e1bf301c462cea",
    "FileName": "BBBB",
    "Order": 99999
  }
]
现在我想按顺序对数组排序,若顺序相同,那个么按文件名的字母顺序排序。 因此,排序数组将如下所示:

[

 {
    "Books": [],
    "_id": "5dea986ba8e1bf301c462cde",
    "FileName": "things2",
    "Order": 2
  },

    {
    "Books": [],
    "_id": "5dea9873a8e1bf301c462ce1",
    "FileName": "among3",
    "Order": 3
  },
    {
    "_id": "5dea9864a8e1bf301c462cdb",
    "Books": [],
    "FileName": "some1",
    "Order": 3
  },

  {
    "Books": [],
    "_id": "5dea9a11a8e1bf301c462ce4",
    "FileName": "AAAAA",
    "Order": 99999
  },
  {
    "Books": [],
    "_id": "5dea9a1ea8e1bf301c462cea",
    "FileName": "BBBB",
    "Order": 99999
  },
   {
    "Books": [],
    "_id": "5dea9a18a8e1bf301c462ce7",
    "FileName": "FFFF",
    "Order": 99999
  },
]

我能够在两个以上的循环中完成它,但不确定这有多优化。寻找任何优化的解决方案。带接口比较器的纯javascript或Typescript也可以工作,谢谢。

这里,测试顺序,然后是字符串

常量数据=[ { 书籍:[], _id:5dea9a11a8e1bf301c462ce4, 文件名:AAAAA, 订单:99999 }, { _id:5dea9864a8e1bf301c462cdb, 书籍:[], 文件名:some1, 订单:3 }, { 书籍:[], _id:5dea9873a8e1bf301c462ce1, 文件名:among3, 订单:3 }, { 书籍:[], _id:5DEA986BA8E1BF301C462Code, 文件名:things2, 订单:2 }, { 书籍:[], _id:5dea9a18a8e1bf301c462ce7, 文件名:FFFF, 订单:99999 }, { 书籍:[], _id:5dea9a1ea8e1bf301c462cea, 文件名:BBBB, 订单:99999 } ]; 常数sortDelegate=a,b=>{ 常数o=a.顺序-b.顺序; ifo==0{ 返回a.FileName.localeCompareb.FileName; } 返回o; }; console.logdata.sortsortDelegate;