@codura/array-method-extension
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

Array Method Extensions

Index

Installation

Using Yarn

yarn add @codura/array-method-extension

Using npm

npm install @codura/array-method-extension

Usage

export * from '@codura/array-method-extension';

Methods

equals

Check if two arrays, containing custom comparable objects, are equal

class ComparableItem {
  constructor(readonly item: string) {
  }

  equals(comparableItem: ComparableItem) {
    return this.item === comparableItem.item;
  }
}

const comparableItems1 = [new ComparableItem('a'), new ComparableItem('b')];
const comparableItems2 = [new ComparableItem('b'), new ComparableItem('a')];
const areEqual = comparableItems1.equals(comparableItems2); // true

Check if two arrays, containing decimals, are equal using decimal.js

import Decimal from 'decimal.js';

const decimals1 = [
  new Decimal(23.56457),
  new Decimal(12.34543),
  new Decimal(34.12345),
];
const decimals2 = [
  new Decimal(12.34543),
  new Decimal(23.56457),
  new Decimal(34.12345),
];
const areEqual = decimals1.equals(decimals2); // true

groupBy

Group an Array to a Map using a key function

const users = [
  {id: '1', gender: 'male', name: 'John'},
  {id: '2', gender: 'female', name: 'Jane'},
  {id: '3', gender: 'male', name: 'Joe'},
];
const usersByGroup = users.groupBy(user => user.gender); // Map([['male', [{id: '1', gender: 'male', name: 'John'}, {id: '3', gender: 'male', name: 'Joe'}]], ['female', [{id: '2', gender: 'female, name: 'Jane'}]]])

Group an Array to a map using a key function and a value function

const users = [
  {id: '1', gender: 'male', name: 'John'},
  {id: '2', gender: 'female', name: 'Jane'},
  {id: '3', gender: 'male', name: 'Joe'},
];
const userNamesById = users.groupBy(user => user.gender, user => user.name); // Map([['male', ['John', 'Joe']], ['female', ['Jane']]])

mapBy

Map an Array to a map using a key function

const users = [
  {id: '1', name: 'John'},
  {id: '2', name: 'Jane'},
  {id: '3', name: 'Joe'},
];
const usersById = users.mapBy(user => user.id); // Map([['1', {id: '1', gender: 'male', name: 'John'}], ['2', {id: '2', gender: 'female, name: 'Jane'}], ['3', {id: '3', gender: 'male', name: 'Joe'}]])

Map an Array to a map using a key function and a value function

const users = [
  {id: '1', name: 'John'},
  {id: '2', name: 'Jane'},
  {id: '3', name: 'Joe'},
];
const userNamesById = users.mapBy(user => user.id, user => user.name); // Map([['1', 'John'], ['2', 'Jane'], ['3', 'Joe']])

mergeBy

Merge custom mergeable objects in an Array

class Drink {
  constructor(readonly name: string, readonly amount: number) {
  }

  merge(drink: Drink) {
    return new Drink(this.name, this.amount + drink.amount);
  }
}

const drinks = [
  new Drink('beer', 5),
  new Drink('wine', 2),
  new Drink('beer', 3),
];
const sum = drinks.merge(drink => drink.name); // [Drink('beer', 8), Drink('wine', 2)]

sum

Sum custom addable objects in an Array

class Payment {
  constructor(readonly note: string, readonly amount: number) {
  }

  add(payment: Payment) {
    return new Payment(this.note, this.amount + payment.amount);
  }
}

const payments = [
  new Payment('first', 100),
  new Payment('second', 200),
  new Payment('third', 300),
];
const sum = payments.sum(new Payment('sum', 0)); // Payment('sum', 600)

Sum decimals in an Array using decimal.js

import Decimal from 'decimal.js';

const decimals = [
  new Decimal(23.56457),
  new Decimal(12.34543),
  new Decimal(34.12345),
];
const sum = payments.sum(new Decimal(0)); // Decimal(70.03345)

Package Sidebar

Install

npm i @codura/array-method-extension

Weekly Downloads

21

Version

1.0.5

License

GPL-3.0-only

Unpacked Size

12 kB

Total Files

24

Last publish

Collaborators

  • jharmelink