Skip to content

Latest commit

 

History

History
490 lines (387 loc) · 12.3 KB

README.md

File metadata and controls

490 lines (387 loc) · 12.3 KB

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.