2.0.1 โข Published 8 months ago
orderby-ts v2.0.1
orderby-ts
orderby-ts is a lightweight, type-safe utility for sorting arrays in TypeScript. It works with arrays of numbers, strings, or objects and is designed to be framework-agnostic, making it easy to use in any TypeScript or JavaScript project.
๐ Features
- Sort arrays by keys or custom selector functions.
- Supports ascending and descending order.
- Framework-agnostic: works with Angular, React, Node.js, and plain TypeScript/JavaScript.
- Immutable: does not modify the original array.
- Fully type-safe and developer-friendly.
๐ฆ Installation
You can install orderby-ts
using npm or yarn:
npm install orderby-ts
Or with Yarn:
yarn add orderby-ts
๐ ๏ธ Usage
Importing the Function
import 'orderby-ts';
Sorting Arrays of Numbers
const numbers = [5, 3, 8, 1];
const sortedNumbers = numbers.orderBy((num) => num);
console.log(sortedNumbers); // Output: [1, 3, 5, 8]
Sorting Arrays of Custom Selector Function
const users = [
{ id: 1, name: 'Alice', age: 30 },
{ id: 2, name: 'Bob', age: 25 },
{ id: 3, name: 'Charlie', age: 35 },
];
const sortedByName = users.orderBy((o) => o.name);
console.log(sortedByName);
// Output: [
// { id: 1, name: 'Alice', age: 30 },
// { id: 2, name: 'Bob', age: 25 },
// { id: 3, name: 'Charlie', age: 35 }
// ];
const sortedByAgeDesc = users.orderBy((o) => o.age, 'DESC');
console.log(sortedByAgeDesc);
// Output: [
// { id: 3, name: 'Charlie', age: 35 },
// { id: 1, name: 'Alice', age: 30 },
// { id: 2, name: 'Bob', age: 25 }
// ];
Handling Empty Arrays
const emptyArray = [];
const sorted = emptyArray.orderBy((item) => item);
console.log(sorted); // Output: []
๐ API
orderBy<T>(array: T[], selector: keyof T | (item: T) => any, order?: 'ASC' | 'DESC'): T[]
Parameters:
array
: The array to be sorted.selector
: A key or a custom selector function to define the sorting logic.order
(optional): indicating whether to sort in ascending order. Default isASC
.
Returns:
- A new, sorted array.
๐งช Tests
The project includes comprehensive tests written with Jest. To run the tests, clone the repository and run the following commands:
npm install
npm test
๐ป Development
Requirements
- Node.js (>= 14)
- TypeScript (>= 4.0)
Building the Project
npm run build
Linting and Formatting
This project uses ESLint and Prettier for linting and code formatting:
npm run lint # Check for linting issues
npm run lint:fix # Automatically fix linting issues
npm run format # Format the code with Prettier
๐ค Contributing
Contributions are welcome! To contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature/my-feature
). - Commit your changes (
git commit -am 'Add my feature'
). - Push to the branch (
git push origin feature/my-feature
). - Open a Pull Request.
Please make sure your code follows the existing style and passes all tests.
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Support
If you like this project, give it a star โญ on GitHub!