Hello my fellow readers!
If you have really come this far in this series of posts, I would like to thank you for your support in reading all of the posts in this series. Thank you and do follow me on Twitter for more tech content soon. Let's get started.
1️⃣ Drop Elements
This snippet returns a new array with n elements removed from the left.
const drop = (arr, n = 1) => arr.slice(n);
drop([1, 2, 3]); // [2,3]
drop([1, 2, 3], 2); // [3]
drop([1, 2, 3], 42); // []
2️⃣ dropRight
This snippet returns a new array with n elements removed from the right.
const dropRight = (arr, n = 1) => arr.slice(0, -n);
dropRight([1, 2, 3]); // [1,2]
dropRight([1, 2, 3], 2); // [1]
dropRight([1, 2, 3], 42); // []
3️⃣ dropRightWhile
This snippet removes elements from the right side of an array until the passed function returns true.
const dropRightWhile = (arr, func) => {
while (arr.length > 0 && !func(arr[arr.length - 1])) arr = arr.slice(0, -1);
return arr;
};
dropRightWhile([1, 2, 3, 4], n => n < 3); // [1, 2]
4️⃣ dropWhile
This snippet removes elements from an array until the passed function returns true.
const dropWhile = (arr, func) => {
while (arr.length > 0 && !func(arr[0])) arr = arr.slice(1);
return arr;
};
dropWhile([1, 2, 3, 4], n => n >= 3); // [3,4]
5️⃣ elementContains
This snippet checks whether the parent element contains the child.
const elementContains = (parent, child) => parent !== child && parent.contains(child);
elementContains(document.querySelector('head'), document.querySelector('title')); // true
elementContains(document.querySelector('body'), document.querySelector('body')); // false
6️⃣ Filter Duplicate Elements
This snippet removes duplicate values in an array.
const filterNonUnique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i));
filterNonUnique([1, 2, 2, 3, 4, 4, 5]); // [1, 3, 5]
7️⃣ findKey
This snippet returns the first key that satisfies a given function.
const findKey = (obj, fn) => Object.keys(obj).find(key => fn(obj[key], key, obj));
findKey(
{
barney: { age: 36, active: true },
fred: { age: 40, active: false },
pebbles: { age: 1, active: true }
},
o => o['active']
); // 'barney'
8️⃣ findLast
This snippet returns the last element for which a given function returns a truthy value.
const findLast = (arr, fn) => arr.filter(fn).pop();
findLast([1, 2, 3, 4], n => n % 2 === 1); // 3
9️⃣ insertAfter
This snippet can be used to insert an HTML string after the end of a particular element.
const insertAfter = (el, htmlString) => el.insertAdjacentHTML('afterend', htmlString);
insertAfter(document.getElementById('myId'), '<p>after</p>'); // <div id="myId">...</div> <p>after</p>
🔟 insertBefore
This snippet can be used to insert an HTML string before a particular element.
const insertBefore = (el, htmlString) => el.insertAdjacentHTML('beforebegin', htmlString);
insertBefore(document.getElementById('myId'), '<p>before</p>'); // <p>before</p> <div id="myId">...</div>
Thank you for reading!
Subscribe to my newsletter to never miss out on Product Launches and my top posts.
Until next time,
Abhiraj
Top comments (2)
Thank you for your post.
Firstly, I think you could improve your filterNonUnique function performance by removing the unnecessary arr.indexOf(i) loop, as the index is already passed to your filter second parameter.
For array deduplication, using a Set might be a most performant solution.
Consider the following function:
Here, computation speed only depends on array length, whereas your current filterNonUnique function also depends on the number of actual duplicates in the inputted array.
Consider a large array with only one duplicate at the start,
arr.lastIndexOf(i)
will go througharr.length - index
elements at each filter iteration.A quick test on JSBench shows the following results:
And as your inputted array grows, further more does the filterNonUnique performance drops.
Have a nice day !
Thank you so much for adding this!