1.0.2 • Published 2 years ago
@merwynpatrick/lotide v1.0.2
Lotide Description
- A mini clone of the Lodash library
Purpose
BEWARE: This library was published for learning purposes. It is not intended for use in production-grade software.
- This project was created and published by me as part of my learnings at Lighthouse Labs.
Usage
Install it:
npm i @merwynpatrick/lotide
Require it:
const _ = require('@merwynpatrick/lotide');
Call it:
const results = _.tail([1, 2, 3]) // => [2, 3]
Documentation
The following functions are currently implemented:
Functions in lotide
- AssertEqual.js Implementing console.assert function.
_.assertEqual("Lighthouse Labs", "Bootcamp") // => ✗ Assertion Failed: Lighthouse Labs !== Bootcamp
Logs whether Assertion passed or failed by comparing the 2 arguments.- head.js Implementing lodash head function.
_.head([5, 6, 7]) // 5
Returns the first element of an array or undefined if array is empty.- tail.js Implementing lodash tail function.
_.tail(["Hello", "Lighthouse", "Labs"]) // ["Lighthouse", "Labs"]
Returns the array exluding the first element.- eqArrays.js Implementing function to test if 2 passed arrays are equal. Can compare 2 deeply nested arrays using recursion.
_.eqArrays(["1", "2", "3"], ["1", "2", 3]) // false
Returns a boolean by comparing 2 arrays.- assertArraysEqual.js Use eqArrays function to test equality of 2 arrays using 2 methods: JSON.stringify() or comapring each element of the 2 arrays and using recursion.
_.assertArraysEqual(["1", "2", "3"], ["1", "2", "3"]) // => ✓ Assertion Passed: [ '1', '2', '3' ] === [ '1', '2', '3' ]
Logs whether Assertion passed or failed by comparing the 2 arrays.- without.js Implementing lodash without function.
_.without(["hello", "world", "lighthouse"], ["hello"]) // ["world", "lighthouse"]
Returns the filtered array by removing the arguments passed. Added more tests in without function and removed error.- flatten.js Implementing lodash flatten function.
_.flatten([1, [2, 3]]) // [1, 2, 3]
Returns the flattened array.- middle.js Implementing lodash middle function.
_.middle([1, 2, 3]) // [2]
Returns an array containing center element/s. If the array length is less than 3, it returns an empty array.- countOnly.js
_.countOnly(["a", "a", "b"]) // {a: 2, b: 1}
This function takes in an array of items and return counts for a specific subset of those items.- countLetters.js
_.countLetters("LHL") // {L : 2, H: 1}
This function is similar to countOnly.js. - letterPositions.js
_.letterPositions("LHL") // {L : 2, H: 1}
This function takes an input string and returns an object with the positions of letters in the string. The positions are zero based and are in an array. - findKeyByValue.js
_.findKeyByValue({sci_fi: "The Expanse", drama: "The Wire"}, "The Wire") // "drama"
This function takes an object and a value as arguments and searches if the object has the key, value pair and returns the corresponding key. - eqObjects.js
_.eqObjects({ a: "1", b: "2" }, { b: "2", a: "1" }) // true
This function takes 2 objects as arguments and returns a boolean value if the key/value pairs are similar. - assertObjectsEqual.js
_.assertObjectsEqual({ a: "1", b: "2" }, { b: "2", a: "1" }) // ✓ Assertion Passed: { a: '1', b: '2' } === { b: '2', a: '1' }
This function leverages on eqObjects and writes a test to show if the assertion passes or fails. There is a mention to use utils.inspect() which converts objects to strings (similar to JSON.stringify()) but hasn't been used. This function logs, doesn't return a value. - map.js
_.map(["ground", "control"], word => word[0]) // ["g", "c"]
This function is our own implementation of Array.map() method which takes an array and a callback function and returns an array subject to the function called on every element of the input array. - takeUntil.js
_.takeUntil([1, 2, 5, 7, 2, -1, 2, 4, 5], x => x < 0) // [1, 2, 5, 7, 2]
This is similar to lowdash takeWhile. TakeUntil function takes an array and callback function and slices the array uptil the callback function condition is evaluated to be false. - findKey.js
_.findKey({a: { stars: 1 }, b: { stars: 2 }}, x => x.stars === 2) // b
This function is similar to findKeyByValue.js but it utlizes a callback function for more flexibility.
Tests in a separate folder for more details.
- Testing using mocha chai. Please run npm install after cloning the repo.