代码之家  ›  专栏  ›  技术社区  ›  Kaisin Li

具有不同键的对象的javascrip排序数组

  •  -1
  • Kaisin Li  · 技术社区  · 5 年前

    [
        {
            "2019-10-01": false
        },
        {
            "2020-04-01": true
        },
        {
            "2020-02-01": true
        },
        {
            "2018-01-01": false
        },
        {
            "2019-12-01": true
        }
    ]
    

    我想按日期对对象排序,日期是关键。最好的办法是什么?

    4 回复  |  直到 5 年前
        1
  •  4
  •   Phil    5 年前

    你可以用 Object.keys() 获取键而不考虑其名称,并将日期字符串与 String.prototype.localeCompare()

    const arr = [
        {
            "2019-10-01": false
        },
        {
            "2020-04-01": true
        },
        {
            "2020-02-01": true
        },
        {
            "2018-01-01": false
        },
        {
            "2019-12-01": true
        }
    ]
    
    arr.sort((a, b) => {
      let [ aDate ] = Object.keys(a)
      let [ bDate ] = Object.keys(b)
      return aDate.localeCompare(bDate)
    })
    
    console.info(arr)
        2
  •  3
  •   Pushkin Joseph    5 年前

    Object.keys 从对象键获取数组并使用 Date

    let data = [
        {
            "2019-10-01": false
        },
        {
            "2020-04-01": true
        },
        {
            "2020-02-01": true
        },
        {
            "2018-01-01": false
        },
        {
            "2019-12-01": true
        }
    ]
    
    data = data.sort((a, b) => 
      new Date(Object.keys(a)[0]) - new Date(Object.keys(b)[0])
    )
    
    console.log(data)
        3
  •  3
  •   ABGR    5 年前

    你可以这样做

    var a = [
        {
            "2019-10-01": false
        },
        {
            "2020-04-01": true
        },
        {
            "2020-02-01": true
        },
        {
            "2018-01-01": false
        },
        {
            "2019-12-01": true
        }
    ]
    a.sort((a, b) => {
     return (new Date(Object.keys(a))) -(new Date(Object.keys(b)))
    })