A toolkit to help solve challenging tasks with object and arrays. Helprjs is fully documented with live Demos and its really simple to use!
Whilst helprjs is fully tested should you ecounter issues please report them.
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 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
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 },
]
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 }
]
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
isEmptyArray([1,2]);
false
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]
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
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
capitalise('hello world')
Returns 'Hello world'
getMaximum - Demo
getMaximum(people,'age');
// 61
getMinimum - Demo
getMinimum(people,'age');
// 24
getTotal - Demo
getTotal(people, 'age');
returns sum total
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(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.