helprjs
This is an EASY TO USE collection of useful methods for manipulating object arrays with added helpers
Example array of objects
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 },
];
Example of use - React example - Demo
import { getEven } from 'helprjs';
function App() {
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 },
];
const result = getEven(people,'age');
return (
<div className="App">
<h1>Users with an even age</h1>
<table>
<tr>
<th scope="col">First Name</th>
<th scope="col">Second Name</th>
<th scope="col">Age</th>
</tr>
{result && result.map((item, index) =>
<tr key={index}>
<td>{item.firstName}</td>
<td>{item.secondName}</td>
<td>{item.age}</td>
</tr>)
}
</table>
</div>
);
}
export default App;
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
General
addNewProperty - Demo
addNewProperty(people, 'registered', true)
adds new key/value to all objects.
countKeys - Demo
countKeys({a:1, b:2, c:3});
// 3
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 merged array without duplicated keys
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
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"]
intersectArrays - Demo
intersectArrays([0,1,2,3,4],[0,1,2,5,6])
// [0,1,2]
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
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(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"
uuid();
// Random uuid generator
// uuid(); returns random id
// e.g. 8ac16a9e-12fc-44fd-8311-952d212cbe02
randomId - Demo
randomId();
// Random ID generator
// zxrm95d6ug
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: 'test@gmail.com' }] ,'email');
[{ email: 'test@gmail.com }]
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.