Custom JavaScript prototype functions to perform common operations with more ease and readability.
npm install prototype-fnsThis 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.

js
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(); // After
`Installation
`console
npm install prototype-fns
`Usage
Make the custom prototypes available by importing them:
`js
import 'prototype-fns';
`You can also import a specific subset of functions, for example if you only need array related ones:
`js
import 'prototype-fns/prototypes/array';
`Or even single ones with:
`js
import 'prototype-fns/prototypes/array/filter-by';
`Array
$3
`js
const people = ['Chris', 'Giuliano', 'Vu'];people.allAfter('Chris');
// ['Giuliano', 'Vu']
people.allAfter('Vu');
// []
`$3
`js
const people = ['Chris', 'Giuliano', 'Vu'];people.allBefore('Vu');
// ['Chris', 'Giuliano']
people.allBefore('Chris');
// []
`$3
`js
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');
// []
`$3
`js
const people = [
{ name: 'Chris' },
{ name: 'Giuliano' },
{ name: 'Vu' }
];people.findBy('name', 'Giuliano');
// { name: 'Giuliano' }
people.findBy('name', 'Tom');
// undefined
`$3
`js
const people = [
{ name: 'Chris' },
{ name: 'Giuliano' },
{ name: 'Vu' }
];people.first();
// { name: 'Chris' }
[].first();
// undefined
`$3
`js
const people = [
{ name: 'Chris', isAdmin: true },
{ name: 'Giuliano', isAdmin: true },
{ name: 'Vu', isAdmin: true }
];people.isAny('name', 'Giuliano');
// true
people.isAny('isAdmin', false);
// false
`$3
`js
const people = [
{ name: 'Chris', isAdmin: true },
{ name: 'Giuliano', isAdmin: true },
{ name: 'Vu', isAdmin: true }
];people.isEvery('name', 'Vu');
// false
people.isEvery('isAdmin', true);
// true
`$3
`js
const people = [
{ name: 'Chris' },
{ name: 'Giuliano' },
{ name: 'Vu' }
];people.last();
// { name: 'Vu' }
[].last();
// undefined
`$3
`js
const people = [
{ name: 'Chris' },
{ name: 'Giuliano' },
{ name: 'Vu' }
];people.mapBy('name');
// ['Chris', 'Giuliano', 'Vu']
`$3
`js
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' }
// ]
`$3
`js
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' }
// ]
`$3
`js
const people = ['Chris', 'Giuliano', 'Vu'];people.oneAfter('Chris');
// 'Giuliano'
people.oneAfter('Vu');
// undefined
`$3
`js
const people = ['Chris', 'Giuliano', 'Vu'];people.oneBefore('Vu');
// 'Giuliano'
people.oneBefore('Chris');
// undefined
`$3
Use
order() on flat arrays.`js
const people = ['Chris', 'Vu', 'Giuliano'];people.order();
// ['Chris', 'Giuliano', 'Vu']
people.order('desc');
// ['Vu', 'Chris', 'Giuliano']
`$3
`js
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.
`js
people.orderBy('name');
// [
// { name: 'Chris' },
// { name: 'Giuliano' },
// { name: 'Vu' }
// ]people.orderBy('name', 'desc');
// [
// { name: 'Vu' },
// { name: 'Giuliano' },
// { name: 'Chris' }
// ]
`$3
`js
const people = ['Chris', 'Vu', 'Giuliano'];people.shuffle();
// Possible order: ['Giuliano', 'Chris', 'Vu']
`$3
`js
const people = [
{ name: 'Chris', score: 1 },
{ name: 'Giuliano', score: 2 },
{ name: 'Vu', score: 3 },
];people.sumBy('score');
// 6
`$3
`js
const people = ['Chris', 'Giuliano', 'Vu'];people.without('Giuliano');
// ['Chris', 'Vu']
`Object
$3
`js
{ name: 'Chris' }.isEmpty();
// false{}.isEmpty();
// true
``