Skip to content

Instantly share code, notes, and snippets.

@geraldfullam
geraldfullam / toDate.js
Created June 13, 2016 14:11
DIY Date manipulations in JavaScript: how to get days, weeks, and months from now with chainable utility methods.
/* Define new prototype methods on Date object. */
// Returns Date as a String in YYYY-MM-DD format.
Date.prototype.toISODateString = function () {
return this.toISOString().substr(0,10);
};
// Returns new Date object offset `n` days from current Date object.
Date.prototype.toDateFromDays = function (n) {
n = parseInt(n) || 0;
var newDate = new Date(this.getTime());
@geraldfullam
geraldfullam / Math.isPrime
Last active January 17, 2018 21:06
Extends the Math object with isPrime, optimized to check only odd numbers greater than two and less than square root.
Math.isPrime = function (n) {
if (n === 2) { return true; }
if (n % 2 === 0) { return false; }
for(let i = 3, s = Math.sqrt(n); i <= s; i += 2) {
if (n % i === 0) { return false; }
}
return n !== 1;
};
// Based on this StackOverflow answer: https://stackoverflow.com/a/40200710/2502532
import React from 'react'
export function isComponentWithName (el, name) {
if (typeof name === 'string') {
return React.isValidElement(el) && name === getDisplayName(el)
}
const validRegEx = name instanceof RegExp ? name : new RegExp(name)
return React.isValidElement(el) && validRegEx.test(getDisplayName(el))
}
@geraldfullam
geraldfullam / gist:eb1da11044643b5cb7aee2f802f049b0
Created January 7, 2020 15:08
Cycle array items by random index
function getRandomIndex(len) {
return Math.floor(Math.random() * Math.floor(len));
}
function cycleArray(arr, i) {
return arr.slice(i).concat(arr.slice(0, i))
}
function cycleArrayByRandomIndex() {
return cycleArray(arr, getRandomIndex(arr.length))