https://github.com/writetome51/sort-by-property
Sorts array of objects by the value of a particular property
https://github.com/writetome51/sort-by-property
alphabetically javascript numerically objects property sort sorter
Last synced: about 2 months ago
JSON representation
Sorts array of objects by the value of a particular property
- Host: GitHub
- URL: https://github.com/writetome51/sort-by-property
- Owner: writetome51
- License: mit
- Created: 2019-02-05T00:35:02.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-08-23T22:09:34.000Z (about 5 years ago)
- Last Synced: 2025-08-09T00:35:53.132Z (about 2 months ago)
- Topics: alphabetically, javascript, numerically, objects, property, sort, sorter
- Language: TypeScript
- Size: 29.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# sortByProperty(
property: string,
objects: object[]
): voidRe-orders `objects`, sorted by `property` in each.
Based on the data type of `objects[0][property]`, it decides how to sort all `objects`.
That type must be either number, string, or boolean. Sorting is done either numerically or
alphabetically (booleans are treated as strings).Note: `property` is a string that can include dot notation ( i.e.,
`'property.subproperty.subsubproperty'` ).
Note: even if `property` is an array index, here you need to use dot-notation
and not square braces, i.e., `'1.0' // instead of [1][0]`## Examples
```js
let objects = [
{user: {email: 'zzz100@gmail.com', age: 55}},
{user: {email: 'xyz100@gmail.com', age: 83}},
{user: {email: 'xyz200@gmail.com', age: 19}},
{user: {email: 'blah123@yahoo.com', age: 28}}
];
sortByProperty('user.email', objects);
console.log(objects);
/**************
[
{ user: { email: 'blah123@yahoo.com', age: 28 } },
{ user: { email: 'xyz100@gmail.com', age: 83 } },
{ user: { email: 'xyz200@gmail.com', age: 19 } },
{ user: { email: 'zzz100@gmail.com', age: 55 } }
]
**************/sortByProperty('user.age', objects);
console.log(objects);
/**************
[
{ user: { email: 'xyz200@gmail.com', age: 19 } },
{ user: { email: 'blah123@yahoo.com', age: 28 } },
{ user: { email: 'zzz100@gmail.com', age: 55 } },
{ user: { email: 'xyz100@gmail.com', age: 83 } }
]
**************/// If the property is undefined in the first object, this triggers error:
objects = [
{ email: 'xyz200@gmail.com'},
{ email: 'blah123@yahoo.com', age: 28 },
{ email: 'zzz100@gmail.com', age: 55 }
];
sortByProperty('age', objects);
// Console: "Error: The first object in the objects array either doesn't have the specified
// property, or that property doesn't have a value."// The following is something you need to be careful with.
// We're going to sort by 'user.age', but the value in first object will be a string,
// meaning sorting will be alphabetical:objects = [
{user: {email: 'blah123@yahoo.com', age: '10'}}, // string means sorting will be alphabetical.
{user: {email: 'zzz100@gmail.com', age: 55}},
{user: {email: 'xxx100@yahoo.com', age: 100}},
{user: {email: 'xyz100@gmail.com', age: 20}},
{user: {email: 'xyz200@gmail.com', age: 5}}
];
sortByProperty('user.age', objects);
console.log(objects);
/**************
[
{ user: { email: 'blah123@yahoo.com', age: '10' } },
{ user: { email: 'xxx100@yahoo.com', age: 100 } },
{ user: { email: 'xyz100@gmail.com', age: 20 } },
{ user: { email: 'xyz200@gmail.com', age: 5 } },
{ user: { email: 'zzz100@gmail.com', age: 55 } }
]
**************/
```## Installation
```bash
npm i @writetome51/sort-by-property
```## Loading
```js
import {sortByProperty} from '@writetome51/sort-by-property';
```