npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

helprjs

v1.0.68

Published

Helprjs is a JavaScript library that provides a whole mess of useful functional programming helpers without extending any built-in objects

Downloads

221

Readme

helprjs

A toolkit to help solve challenging tasks with object and arrays. Helprjs is fully documented with live Demos and its really simple to use!

Q&A:

Whilst helprjs is fully tested should you ecounter issues please report them.

Most of the examples here make use of this people object.

const people = [
    { id: 1, firstName: 'John', secondName: 'Smith', age: '61', status: 1 },
    { id: 2, firstName: 'John', secondName: 'West', age: '55', status: true },
    { id: 3, firstName: 'Brenda', secondName: 'Holt', age: '60', status: false },
    { id: 4, firstName: 'Sally', secondName: 'Brampton', age: '33', status: undefined },
    { id: 5, firstName: 'June', secondName: 'Chester', age: '47', status: NaN },
    { id: 6, firstName: 'Jack', secondName: 'Carter', age: '24', status: null },
    { id: 7, firstName: 'Jack', secondName: 'Foster', age: '58', status: 0 },
    { id: 7, firstName: 'Jack', secondName: 'Foster', age: '58', status: 0 },
    { id: 7, firstName: 'Jack', secondName: 'Foster', age: '58', status: 0 },
];

Methods

Methods can be grouped into the following categories:

General : object array manipulation

Array: array only

Boolean : returns true or false

Helpers : deals with values

Numerical : uses numerical data

Vailidation : returns only objects that meet the valid criteria

Latest

maskSensitiveData

Masks sensitive data
Useage:

const people = [
    { id: 1, firstName: 'John', secondName: 'Smith', age: '61', status: 1 },
    { id: 2, firstName: 'John', secondName: 'West', age: '55', status: true },
];

const masked = maskSensitiveData(people, ['firstName', 'secondName']);

Output: 
[
    { id: 1, firstName: '****', secondName: '*****', age: '61', status: 1 },
    { id: 2, firstName: '****', secondName: '****', age: '55', status: true },
]

findAllDuplicates

returns an array of duplicate objects

Useage:

const people: Person[] = [
    { id: 1, firstName: "John", secondName: "Smith", age: "61", status: 1 },
    { id: 2, firstName: "John", secondName: "West", age: "55", status: true },
    { id: 3, firstName: "Brenda", secondName: "Holt", age: "60", status: false },
    { id: 4, firstName: "Sally", secondName: "Brampton", age: "33", status: undefined },
    { id: 5, firstName: "June", secondName: "Chester", age: "47", status: NaN },
    { id: 6, firstName: "Jack", secondName: "Carter", age: "24", status: null },
    { id: 7, firstName: "Jack", secondName: "Foster", age: "58", status: 0 },
    { id: 7, firstName: "Jack", secondName: "Foster", age: "58", status: 0 },
    { id: 7, firstName: "Jack", secondName: "Foster", age: "58", status: 0 },
];

const duplicates = findAllDuplicates(people);
console.log(duplicates);

[
  { id: 7, firstName: 'Jack', secondName: 'Foster', age: '58', status: 0 },
  { id: 7, firstName: 'Jack', secondName: 'Foster', age: '58', status: 0 },
  { id: 7, firstName: 'Jack', secondName: 'Foster', age: '58', status: 0 }
]

General

mergeArraysRemoveDuplicates - Demo

merges two arrays and removes all duplicates
Useage:

const array1 = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }];
const array2 = [{ id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }];

const mergedArray = mergeArraysRemoveDuplicates(array1, array2);

deGroup - Demo

reverses a grouped object.
deGroup(people, groupObject)
returns 9 objects

objectToArray - Demo

pass in an object
Useage: objectToArray({firstName: 'Mike', lastName: 'Jones', age: 34, registered: true})
Returns ['Mike', 'Jones', 34, true]

arrayToObject - Demo

pass in an array of values
Useage: arrayToObject(["Mike","Jones",34,true])
Returns {0: 'Mike', 1: 'Jones', 2: 34, 3: true}

pass in an array of values and custom keys
Useage: arrayToObject(["Mike","Jones",34,true], ["firstName", "lastName","age","registered"])
Returns {firstName: 'Mike', lastName: 'Jones', age: 34, registered: true}

addNewProperty - Demo

addNewProperty(people, 'registered', true)
adds new key/value to all objects.

countKeys - Demo

countKeys({a:1, b:2, c:3});
// 3

CSVtoArray - Demo

CSVtoArray(csvfile');
// [ {...} {...} ]

getEven - Demo

getEven(people,'age');
returns objects containing only even values

getObject - Demo

getObject(people,2);
returns an object from an array from array key

getOdd - Demo

getOdd(people,'age');
returns objects containing only odd values

getValues - Demo

getValues(people, 'firstName');
// ["John", "John", "Brenda", "Sally", "June", "Jack", "Jack"]

groupByKey - Demo

groupByKey(people, 'firstName')
// {John: Array(2), Brenda: Array(1), Sally: Array(1), June: Array(1), Jack: Array(2)}

mergeArrays - Demo


mergeArrays(arr1,arr2,key); 
returns a single merged array

randomOrder - Demo

randomOrder(people);
returns randomly ordered array

refine - Demo

const result = refine(people, "firstName", "Jack");
// return only objects that match criteria

removeDuplicates - Demo

removeDuplicates(people, 'firstName');
removes all objects containing duplicates values

removeFalsy - Demo

removeFalsy(people, 'status');
removes all objects containing falsy values

removeValue - Demo

removeValue(people,'firstName', 'John');
remove all objects that have this value
Note: 1 and '1' will give a different result, be sure to include quotation marks if targetting a string

setAllValues - Demo

setAllValues(people, 'age', '25');
(sets all values to 25)

sortByKey - Demo

sortByKey(people, 'age', 'desc');
returns object in value order
Note, 3rd paramenter is optional.  desc = decending order.

toArray - Demo

toArray(people, 'age');
// ["61","55","60","33","47","24","58"]

toLower - Demo

toLower(people, 'firstName');
returns object with values as lowercase

toUpper - Demo

toUpper(people, 'firstName');
returns object with values as uppercase

toString - Demo

toString(people, 'id');
returns object with values as a string

toTruncate - Demo

toTruncate(people, 'firstName', 3);
returns object with values truncated to numerical value

toNumber - Demo

toNumber(people, 'age');
returns object with values as numbers

toTrim - Demo

toTrim(people, 'firstName');
returns object values with whitespace removed

Array

isEmptyArray

isEmptyArray([1,2]);
false

getAverage

getAverage([1, 2, 3, 4, 4, 4]));
3

concatArray - Demo

pass in an array of arrays
Useage: concatArray([ [1,2],["three", "four"],[5],[6] ])
Returns [1,2,"three","four",5,6]

populateArray - Demo

populateArray(0,20,4)
// [4,8,12,16,20]

uniqueArray - Demo

uniqueArray(["one",1,1,2,3,"two","three","four","one","two"])
// ["one", 1, 2, 3, "two", "three", "four"]

emptyArray - Demo

emptyArray(["one","two","three","four"])
// []

reverseArray - Demo

reverseArray([0,1,2,3,4,5,6])
// [6,5,4,3,2,1,0]

shuffleArray - Demo

shuffleArray([0,1,2,3,4,5,6])
// [4,0,1,6,5,3,2]

Boolean

isAll - Demo

pass in object array, key and function. 

const isBelow = (currentValue) => currentValue < 99;
const result = isAll(people, 'age', isBelow)
console.log('result', result)
// true

isPresent - Demo

pass in object array, key and function. 

const age = 48;
const isBelow = (currentValue) => currentValue < age;
const result = isPresent(people, "age", isBelow);
console.log('result', result)
// true

isArray - Demo

isArray([1,2,3]);
// true

isBigint - Demo

isBigint(9007199254740991n);
// true

isBoolean - Demo

isBoolean(true);
// true

isNaN - Demo

isNaN(NaN);
// true

isNull - Demo

isNull(null);
// true

isNumber - Demo

isNumber(1);
// true

isObject - Demo

isObject({x:1, y:2});
// true

isString - Demo

isString('abc'});
// true

isSymbol - Demo

isSymbol(Symbol());
// true

isUndefined - Demo

isUndefined(undefined);
// true

Helpers

percentage - Demo

percentage(partial, total)

// percentage(50, 200)
// 25
// calculate percentage of partial against total number

typeOf - Demo

typeOf(value);

// typeOf(1); returns "number"
// typeOf([1,2,3]); returns "array"
// typeOf({x: 1}); returns "object"

randomId - Demo

randomId();

// Random ID generator
// zxrm95d6ug

String

capitalise('hello world')
Returns 'Hello world'

Numerical

getMaximum - Demo

getMaximum(people,'age');
// 61

getMinimum - Demo

getMinimum(people,'age');
// 24

getTotal - Demo

getTotal(people, 'age');
returns sum total

Validation

getValidEmail

getValidEmail( [
    { id: 1, email: 'badEmailDotgmail.com'  },
    { id: 2, email: '[email protected]'  },
    { id: 3, email: 'test@badEmail' }
],'email')
returns only objects containing valid email addresses 

getValidString

getValidString(people, 'firstName', 5, 99)
//Note: (array, key, minimumLength, maximumLength)
returns only objects containing text within min and max length

Combination - Demo

In this example five methods have been used to generate a desired output.  
It is overengineered and an unlikely requirement however it demonstrates 
more possibilities when using helprjs.