Moment: Urutkan Fungsi Perbandingan

Dibuat pada 25 Feb 2014  ·  6Komentar  ·  Sumber: moment/moment

Saat mengurutkan daftar objek momen (atau objek yang memiliki atribut momen, dan harus menjadi kunci pengurutan), akan lebih bagus jika ada fungsi perbandingan yang disertakan. Sehingga kita bisa melakukan hal-hal seperti:

array.sort(m.compare)

Komentar yang paling membantu

Karena fungsi moment#valueOf , fungsi perbandingan menjadi sepele.

var array = [
    moment(),
    moment().add(1, 'd'),
    moment().subtract(1, 'd')
];

console.log(array.map(function (m) {
    return m.format('YYYY-MM-DD')
}));
// ["2014-02-24", "2014-02-25", "2014-02-23"] 

array.sort(function (a, b) {
    return a - b;
});

console.log(array.map(function (m) {
    return m.format('YYYY-MM-DD')
}));
// ["2014-02-23", "2014-02-24", "2014-02-25"]

Semua 6 komentar

Karena fungsi moment#valueOf , fungsi perbandingan menjadi sepele.

var array = [
    moment(),
    moment().add(1, 'd'),
    moment().subtract(1, 'd')
];

console.log(array.map(function (m) {
    return m.format('YYYY-MM-DD')
}));
// ["2014-02-24", "2014-02-25", "2014-02-23"] 

array.sort(function (a, b) {
    return a - b;
});

console.log(array.map(function (m) {
    return m.format('YYYY-MM-DD')
}));
// ["2014-02-23", "2014-02-24", "2014-02-25"]

Terima kasih.

Saya secara eksplisit menggunakan moment#valueOf , sepertinya saya tidak perlu melakukannya.

Dengan TypeScript, ini tidak sesederhana itu. Pengetikan tidak memungkinkan Anda untuk mengatakan a - b .

Sebaliknya, saya hanya mengatakan sesuatu seperti:

a.isBefore(b) ? -1 : 1

Tidak yakin apakah saya mendapatkan 1 dan -1 dengan cara yang benar.

Dengan TypeScript, ini tidak sesederhana itu. Pengetikan tidak memungkinkan Anda untuk mengatakan a - b.

Anda dapat secara eksplisit memanggil moment#valueOf sebagai a.valueOf() - b.valueOf()

Saya memihak:

momentsArray.sort((a, b) => a.diff(b));

saya sendiri.

@robertmassaioli hati-hati dengan kode Anda,

a.isBefore(b) ? -1 : 1

jika a sama, itu akan menukarnya, daripada menyimpannya di tempatnya. Saya tahu kedengarannya tidak banyak, tetapi bagi sebagian orang mungkin tidak terduga.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

ninigix picture ninigix  ·  3Komentar

vbullinger picture vbullinger  ·  3Komentar

alvarotrigo picture alvarotrigo  ·  3Komentar

Delgan picture Delgan  ·  3Komentar

tanepiper picture tanepiper  ·  3Komentar