# sort-order

> Combine a series of sort functions to create complex sort orders

Latest version **1.1.2** (published 2023-11-21) · MIT license · 0 weekly downloads

## Install

```sh
npm install sort-order
pnpm add sort-order
yarn add sort-order
bun add sort-order
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.2 |
| Published | 2023-11-21 |
| First published | 2016-03-18 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 4.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Author | Cameron Hunter |
| Maintainers | cameronhunter |
| Keywords | sort, ordering, comparator |

## Links

- npm: https://www.npmjs.com/package/sort-order
- Repository: https://github.com/cameronhunter/sort-order
- Homepage: https://github.com/cameronhunter/sort-order#readme
- Issues: https://github.com/cameronhunter/sort-order/issues
- npm.io page: https://npm.io/package/sort-order

## Recent versions

- 1.1.2 (latest) — 2023-11-21
- 1.1.1 — 2023-11-20
- 1.1.0 — 2023-11-20
- 1.0.1 — 2016-07-11
- 1.0.0 — 2016-03-18

## README

# `sort-order`

[![npm package](https://img.shields.io/npm/v/sort-order?logo=npm)](https://www.npmjs.com/package/sort-order)
[![npm downloads](https://img.shields.io/npm/dm/sort-order?logo=npm)](https://www.npmjs.com/package/sort-order)
[![main branch status](https://img.shields.io/github/actions/workflow/status/cameronhunter/sort-order/post-merge.yml?logo=github&label=main)](https://github.com/cameronhunter/sort-order/actions/workflows/post-merge.yml)

> Combine a series of sort functions to create complex sort orders.

## Install

```bash
npm install --save sort-order
```

## Example

Sort an array of objects by `creator` first, then `joinTime` and finally `id`:

```javascript
import sortBy from 'sort-order';

// Items to order
const a = { creator: true, joinTime: 0, id: 987 };
const b = { creator: false, joinTime: 1, id: 123 };
const c = { creator: false, joinTime: 1, id: 456 };
const d = { creator: false, joinTime: 2, id: 789 };

// Individual sort functions
const creator = (a, b) => (a.creator && -1) || (b.creator && 1) || 0;
const field = (field) => (a, b) => a[field] - b[field];

// Combined sort function
const ordering = sortBy(creator, field('joinTime'), field('id'));

// Sort!
[d, c, b, a].sort(ordering); // [a, b, c, d]
```

---
_Source: https://npm.io/package/sort-order · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
