Moment: فرز وظيفة المقارنة

تم إنشاؤها على ٢٥ فبراير ٢٠١٤  ·  6تعليقات  ·  مصدر: moment/moment

عند فرز قائمة الكائنات اللحظية (أو الكائنات التي لها سمة هي لحظة ، ويجب أن تكون مفتاح الفرز) ، سيكون من الرائع تضمين وظيفة مقارنة. حتى نتمكن من القيام بأشياء مثل:

array.sort(m.compare)

التعليق الأكثر فائدة

بسبب وظيفة moment#valueOf ، فإن وظيفة المقارنة تافهة.

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"]

ال 6 كومينتر

بسبب وظيفة moment#valueOf ، فإن وظيفة المقارنة تافهة.

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"]

شكرا.

كنت أستخدم بشكل صريح moment#valueOf ، ويبدو أنني لست بحاجة إلى ذلك.

مع الكتابة المطبوعة ، هذا ليس بهذه البساطة. لا تسمح لك الكتابة أن تقول a - b .

بدلاً من ذلك ، أقول شيئًا مثل:

a.isBefore(b) ? -1 : 1

لست متأكدًا مما إذا كنت قد حصلت على 1 و -1 بالطريقة الصحيحة.

مع الكتابة المطبوعة ، هذا ليس بهذه البساطة. لا تسمح لك الكتابة أن تقول أ - ب.

يمكنك استدعاء اللحظة صراحة # valueOf كـ a.valueOf() - b.valueOf()

أنا متحيز لـ:

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

نفسي.

robertmassaioli كن حذرا مع التعليمات البرمجية الخاصة بك ،

a.isBefore(b) ? -1 : 1

إذا كانت a هي نفسها ، فسيتم تبديلها بدلاً من إبقائها في مكانها. أعلم أنه لا يبدو كثيرًا ولكنه قد يكون غير متوقع بالنسبة للبعض.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

slavafomin picture slavafomin  ·  3تعليقات

BCup picture BCup  ·  3تعليقات

dbshwang picture dbshwang  ·  3تعليقات

benhathaway picture benhathaway  ·  3تعليقات

RobinvanderVliet picture RobinvanderVliet  ·  3تعليقات