@plq/array-functions
TypeScript icon, indicating that this package has built-in type declarations

1.5.1 • Public • Published

array-functions

A set of frequently used functions for working with arrays, for sorting, filtering or checking the state of an array

Functions

filterBySameKeyValue

Filters an array of objects so that the value of a given key occurs only once in the array.

import { filterBySameKeyValue } from '@plq/array-functions'

const array = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Alice' },
]

console.log(filterBySameKeyValue(array, 'name')) // Output: [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]

getKeyValue

Returns the array of values of a given key from an array of objects.

import { getKeyValue } from '@plq/array-functions'

const array = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Alice' },
]

console.log(getKeyValue(array, 'name')) // Output: ['Alice', 'Bob', 'Alice']

sortBy

Sorts an array of objects by a given key.

import { sortBy } from '@plq/array-functions'

const array = [
  { id: 1, name: 'Alice' },
  { id: 3, name: 'Alice' },
  { id: 2, name: 'Bob' },
]

console.log(sortBy(array, 'id')) // Output: [{ id: 3, name: 'Bob' }, { id: 2, name: 'Alice' }, { id: 1, name: 'Alice' }]
console.log(sortBy(array, 'id', 'asc')) // Output: [{ id: 1, name: 'Alice' }, { id: 2, name: 'Alice' }, { id: 3, name: 'Bob' }]

isSorted

Checks if an array of objects is sorted by a given key.

import { isSorted } from '@plq/array-functions'

const array = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Alice' },
]

console.log(isSorted(array, 'id')) // Output: false because default sort order is 'desc'
console.log(isSorted(array, 'id', 'asc')) // Output: true
console.log(isSorted(array, 'name', 'asc')) // Output: false

getUniqueValues

Returns an array of unique values from an array of objects.

import { getUniqueValues } from '@plq/array-functions'

const array = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Alice' },
]

console.log(getUniqueValues(array, 'name')) // Output: ['Alice', 'Bob']

splitByKeyValue

Splits an array of objects into subarrays with the same value of the given key.

import { splitByKeyValue } from '@plq/array-functions'

const array = [
	{ id: 1, name: 'Alice' },
	{ id: 2, name: 'Bob' },
	{ id: 3, name: 'Alice' },
]

console.log(splitByKeyValue(array, 'name')) // Output: [[{ id: 1, name: 'Alice' }, { id: 3, name: 'Alice' }], [{ id: 2, name: 'Bob' }]]

createBalancedArray

Creates an array of a specified length where the sum of all elements equals a given sum. The function distributes the sum evenly across the array elements. If the sum is negative, the function creates an array of negative numbers. If the sum cannot be evenly distributed, the function distributes the remainder as evenly as possible. If the length is zero or negative, the function returns an empty array.

import { createBalancedArray } from '@plq/array-functions'

console.log(createBalancedArray(5, 10)); // Output: [2, 2, 2, 2, 2]
console.log(createBalancedArray(3, -5)); // Output: [-2, -2, -1]
console.log(createBalancedArray(0, 10)); // Output: []
console.log(createBalancedArray(-3, 10)); // Output: []

Development

Install dependencies

npm install

Lint

We use ESLint and @typescript-eslint/eslint-plugin to lint our code. Check out .eslintrc.json

npm run lint

Run tests

We use Jest to test our code.

npm test

Build

We use TypeScript to build our code.

npm run build

Dev check list

  • [ ] Add new file to src folder like function-name.ts
  • [ ] Write a function functionName in function-name.ts
  • [ ] Add new function to src/index.ts like export { default as functionName } from './function-name'
  • [ ] Add new test to __tests__ folder with name function-name.test.ts
  • [ ] Write tests for functionName in function-name.test.ts
  • [ ] Run npm run lint
  • [ ] Run npm run test
  • [ ] Commit and push your changes
  • [ ] Create a pull request

Package Sidebar

Install

npm i @plq/array-functions

Weekly Downloads

2

Version

1.5.1

License

MIT

Unpacked Size

51.1 kB

Total Files

67

Last publish

Collaborators

  • akurganow