1.3.1 • Published 3 years ago
prototype-fns v1.3.1
A set of custom JavaScript prototypes that you will learn to love.
This library is adding custom prototype methods to your JavaScript that are easier to use and to understand. You don't need to import helpers everywhere you want to use them - The methods are directly available on the Object/Array.
Table of Contents
- A set of custom JavaScript prototypes that you will learn to love.
- Table of Contents
Examples
const people = [
{ name: 'Chris' },
{ name: 'Giuliano' },
{ name: 'Vu' }
];
// Find
people.find(person => person.name === 'Chris'); // Before
people.findBy('name', 'Chris'); // After
// Map
people.map(person => person.name); // Before
people.mapBy('name'); // After
// Sort
people.sort((a, b) => a.prop - b.prop); // Before
people.orderBy('name'); // After
// Last
people[people.length - 1]; // Before
people.last(); // AfterInstallation
npm install prototype-fnsUsage
Make the custom prototypes available by importing them:
import 'prototype-fns';You can also import a specific subset of functions, for example if you only need array related ones:
import 'prototype-fns/prototypes/array';Or even single ones with:
import 'prototype-fns/prototypes/array/filter-by';Array
allAfter(item)
const people = ['Chris', 'Giuliano', 'Vu'];
people.allAfter('Chris');
// ['Giuliano', 'Vu']
people.allAfter('Vu');
// []allBefore(item)
const people = ['Chris', 'Giuliano', 'Vu'];
people.allBefore('Vu');
// ['Chris', 'Giuliano']
people.allBefore('Chris');
// []filterBy(key, value)
const people = [
{ name: 'Chris', isAdmin: true },
{ name: 'Giuliano', isAdmin: false },
{ name: 'Vu', isAdmin: false }
];
people.filterBy('name', 'Chris');
// [
// { name: 'Chris', isAdmin: true }
// ]
people.filterBy('isAdmin', false);
// [
// { name: 'Giuliano', isAdmin: false },
// { name: 'Vu', isAdmin: false },
// ]
people.filterBy('name', 'Tom');
// []findBy(key, value)
const people = [
{ name: 'Chris' },
{ name: 'Giuliano' },
{ name: 'Vu' }
];
people.findBy('name', 'Giuliano');
// { name: 'Giuliano' }
people.findBy('name', 'Tom');
// undefinedfirst()
const people = [
{ name: 'Chris' },
{ name: 'Giuliano' },
{ name: 'Vu' }
];
people.first();
// { name: 'Chris' }
[].first();
// undefinedisAny(key, value)
const people = [
{ name: 'Chris', isAdmin: true },
{ name: 'Giuliano', isAdmin: true },
{ name: 'Vu', isAdmin: true }
];
people.isAny('name', 'Giuliano');
// true
people.isAny('isAdmin', false);
// falseisEvery(key, value)
const people = [
{ name: 'Chris', isAdmin: true },
{ name: 'Giuliano', isAdmin: true },
{ name: 'Vu', isAdmin: true }
];
people.isEvery('name', 'Vu');
// false
people.isEvery('isAdmin', true);
// truelast()
const people = [
{ name: 'Chris' },
{ name: 'Giuliano' },
{ name: 'Vu' }
];
people.last();
// { name: 'Vu' }
[].last();
// undefinedmapBy(key)
const people = [
{ name: 'Chris' },
{ name: 'Giuliano' },
{ name: 'Vu' }
];
people.mapBy('name');
// ['Chris', 'Giuliano', 'Vu']mapProps(prop, ...)
const people = [
{ id: 1, name: 'Chris', token: 'abc' },
{ id: 2, name: 'Giuliano', token: 'def' },
{ id: 3, name: 'Vu', token: 'ghi' },
];
people.mapProps('id', 'name');
// [
// { id: 1, name: 'Chris' },
// { id: 2, name: 'Giuliano' },
// { id: 3, name: 'Vu' }
// ]mapPropsWithout(prop, ...)
const people = [
{ id: 1, name: 'Chris', token: 'abc' },
{ id: 2, name: 'Giuliano', token: 'def' },
{ id: 3, name: 'Vu', token: 'ghi' },
];
people.mapPropsWithout('token');
// [
// { id: 1, name: 'Chris' },
// { id: 2, name: 'Giuliano' },
// { id: 3, name: 'Vu' }
// ]oneAfter(item)
const people = ['Chris', 'Giuliano', 'Vu'];
people.oneAfter('Chris');
// 'Giuliano'
people.oneAfter('Vu');
// undefinedoneBefore(item)
const people = ['Chris', 'Giuliano', 'Vu'];
people.oneBefore('Vu');
// 'Giuliano'
people.oneBefore('Chris');
// undefinedorder(direction?)
Use order() on flat arrays.
const people = ['Chris', 'Vu', 'Giuliano'];
people.order();
// ['Chris', 'Giuliano', 'Vu']
people.order('desc');
// ['Vu', 'Chris', 'Giuliano']orderBy(key, direction?)
const people = [
{ name: 'Chris' },
{ name: 'Vu' },
{ name: 'Giuliano' }
];
people.orderBy('name', 'asc');
// [
// { name: 'Chris' },
// { name: 'Giuliano' },
// { name: 'Vu' }
// ]ℹ️ If you omit the direction, the result will be ordered ascending by default.
people.orderBy('name');
// [
// { name: 'Chris' },
// { name: 'Giuliano' },
// { name: 'Vu' }
// ]
people.orderBy('name', 'desc');
// [
// { name: 'Vu' },
// { name: 'Giuliano' },
// { name: 'Chris' }
// ]shuffle()
const people = ['Chris', 'Vu', 'Giuliano'];
people.shuffle();
// Possible order: ['Giuliano', 'Chris', 'Vu']sumBy(key)
const people = [
{ name: 'Chris', score: 1 },
{ name: 'Giuliano', score: 2 },
{ name: 'Vu', score: 3 },
];
people.sumBy('score');
// 6without(item)
const people = ['Chris', 'Giuliano', 'Vu'];
people.without('Giuliano');
// ['Chris', 'Vu']Object
isEmpty()
{ name: 'Chris' }.isEmpty();
// false
{}.isEmpty();
// true