一个小巧(110B)且快速的实用工具类,用于排序ISO 8601日期字符串

网友投稿 915 2022-10-29

一个小巧(110B)且快速的实用工具类,用于排序ISO 8601日期字符串

一个小巧(110B)且快速的实用工具类,用于排序ISO 8601日期字符串

ARCHIVEDUnless you're working with very old browsers or Node.js runtimes, you do not need this library!A regular arr.sort() will work identically, and is now much faster.If sorting by recency (latest first), please beware of the gotchas.

A tiny (110B) and fast utility to sort ISO 8601 Date strings

Converting strings to Date instances is expensive.Unless you truly need a Date instance (or have one anyway), you're better off relying on string comparison logic.Gone are wasteful days of parsing Dates just to determine a sort order.

While ISO 8601 stirngs are preferred (see Date.prototype.toISOString()), all you really need is a YYYY-MM-DD prefix for safe LTR character comparisons.

Note: Formats like MM/DD/YYYY and DD-MM-YYYY will yield incorrect results.

This module is delivered as:

CommonJS: dist/index.jsES Module: dist/index.mjsUMD: dist/index.min.js

Install

$ npm install --save sort-isostring

Usage

import sorter from 'sort-isostring';const articles = [ { updated: '2019-12-01' }, { updated: '2020-03-07T05:51:07.746Z' }, { updated: '2018-01-07T05:50:41.107Z' }, { updated: '2020-02-21' },];// Sort: Oldest firstarticles.sort((x, y) => sorter(x.updated, y.updated));console.log(articles.map(x => x.updated));//=> [ '2018-01-07T05:50:41.107Z', '2019-12-01',//=> '2020-02-21', '2020-03-07T05:51:07.746Z' ]// Sort: Newest first (aka, recency)articles.sort((x, y) => sorter(y.updated, x.updated));console.log(articles.map(x => x.updated));//=> [ '2020-03-07T05:51:07.746Z', '2020-02-21',//=> '2019-12-01', '2018-01-07T05:50:41.107Z' ]

API

sort(foo, bar)

Returns: Number

As with any comparison function, when comparing foo and bar:

A 0 is returned if the values are equalA -1 is returned if foo is less than barA 1 is returned if foo is greater than bar

foo

Type: String

A Date string in ISO 8601 (or similar) format.See Date.prototype.toISOString().

Important: The string format must be identical to bar's format.

bar

Type: String

A Date string in ISO 8601 (or similar) format.See Date.prototype.toISOString().

Important: The string format must be identical to foo's format.

Benchmarks

Running on Node.js v10.13.0

Date[] -> Number x 322,876 ops/sec ±0.30% (96 runs sampled)string[].map(Date) -> Number x 194,208 ops/sec ±0.77% (95 runs sampled)string[] -> sort-isostring x 1,443,499 ops/sec ±1.22% (94 runs sampled)

Related

tinydate - An extremely quick, tiny (349B), and reusable date formatter.

License

MIT © Luke Edwards

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于grpc从零开始搭建一个准生产分布式应用(11) - 专题-查询分页
下一篇:避免图片多次缓存
相关文章

 发表评论

暂时没有评论,来抢沙发吧~