代码之家  ›  专栏  ›  技术社区  ›  Twitter khuong291

排序数组给出错误结果

  •  -2
  • Twitter khuong291  · 技术社区  · 7 年前

    我有一组对象:

    [{ date: '2018 49th', '3_SLS93 N/P': 1582.86, '320_Oleic Acid 75 min': 825 },
    { date: '2018 50th', '3_SLS93 N/P': 1572.14, '320_Oleic Acid 75 min': 825 },
    {
      date: '2018 51st',
      '3_SLS93 N/P': 1582.86,
      '320_Oleic Acid 75 min': 828.57,
    },
    {
      date: '2018 52nd',
      '3_SLS93 N/P': 1562.14,
      '320_Oleic Acid 75 min': 835.71,
    },
    { date: '2019 1st', '3_SLS93 N/P': 1555, '320_Oleic Acid 75 min': 833.33 },
    { date: '2017 48th', '3_SLS93 N/P': 1560.0, '320_Oleic Acid 75 min': 1255 }];
    

    我想按升序排序 date 值,因此结果如下:

    [{ date: '2017 48th', '3_SLS93 N/P': 1560.0, '320_Oleic Acid 75 min': 1255 }, { date: '2018 49th', '3_SLS93 N/P': 1582.86, '320_Oleic Acid 75 min': 825 },
        { date: '2018 50th', '3_SLS93 N/P': 1572.14, '320_Oleic Acid 75 min': 825 },
        {
          date: '2018 51st',
          '3_SLS93 N/P': 1582.86,
          '320_Oleic Acid 75 min': 828.57,
        },
        {
          date: '2018 52nd',
          '3_SLS93 N/P': 1562.14,
          '320_Oleic Acid 75 min': 835.71,
        },
        { date: '2019 1st', '3_SLS93 N/P': 1555, '320_Oleic Acid 75 min': 833.33 }];
    

    我用 sort() 只是,但不会改变。

    1 回复  |  直到 7 年前
        1
  •  5
  •   DjaouadNM    7 年前

    您可以使用自定义排序函数,如下所示:

    var array = [{ date: '2018 49th', '3_SLS93 N/P': 1582.86, '320_Oleic Acid 75 min': 825 },
    { date: '2018 50th', '3_SLS93 N/P': 1572.14, '320_Oleic Acid 75 min': 825 },
    {
      date: '2018 51st',
      '3_SLS93 N/P': 1582.86,
      '320_Oleic Acid 75 min': 828.57,
    },
    {
      date: '2018 52nd',
      '3_SLS93 N/P': 1562.14,
      '320_Oleic Acid 75 min': 835.71,
    },
    { date: '2019 1st', '3_SLS93 N/P': 1555, '320_Oleic Acid 75 min': 833.33 },
    { date: '2017 48th', '3_SLS93 N/P': 1560.0, '320_Oleic Acid 75 min': 1255 }];
    
    sorted_array = array.sort((a, b) => {
      if (a.date < b.date) {
        return -1;
      }
      if (a.date > b.date) {
        return 1;
      }
      return 0;
    });
    
    console.log(sorted_array);

    如果您喜欢短代码,这里还有一个较短的版本:

    var array = [{ date: '2018 49th', '3_SLS93 N/P': 1582.86, '320_Oleic Acid 75 min': 825 },
    { date: '2018 50th', '3_SLS93 N/P': 1572.14, '320_Oleic Acid 75 min': 825 },
    {
      date: '2018 51st',
      '3_SLS93 N/P': 1582.86,
      '320_Oleic Acid 75 min': 828.57,
    },
    {
      date: '2018 52nd',
      '3_SLS93 N/P': 1562.14,
      '320_Oleic Acid 75 min': 835.71,
    },
    { date: '2019 1st', '3_SLS93 N/P': 1555, '320_Oleic Acid 75 min': 833.33 },
    { date: '2017 48th', '3_SLS93 N/P': 1560.0, '320_Oleic Acid 75 min': 1255 }];
    
    sorted_array = array.sort((a, b) => (a.date > b.date) - (a.date < b.date));
    
    console.log(sorted_array);