Skip to content

Instantly share code, notes, and snippets.

@tvler
tvler / getCircularArrayIndex.js
Created April 16, 2018 23:22
Get circular array index
const getCircularArrayIndex = (i, { length }) =>
(i % length + length) % length;
const testArray = new Array(5);
for (let i = -30; i < 31; i++) {
console.log(i, getCircularArrayIndex(i, testArray))
}
@tvler
tvler / imessage-pics.sh
Created March 22, 2018 14:55
(MacOS) Open all iMessage attachments in Preview
open -a Preview ~/Library/Messages/Attachments
@tvler
tvler / FormDataToURLSearchParams.js
Created January 14, 2018 00:20
FormData into URLSearchParams one-liner
new URLSearchParams([...new FormData(ev.target)])
@tvler
tvler / pick.js
Last active April 19, 2022 20:14
Experimental notation for picking a subset of a js object
const getProxy = (target = {}, key) =>
target[key] || (target[key] = new Proxy({}, { get: getProxy }));
const fillPick = (proxy, fn, fromObject = fn(proxy)) =>
Object.assign(
{},
...Object.entries(proxy).map(([key, value]) => ({
[key]: Object.keys(value).length
? fillPick(value, fn, fromObject[key])
: fromObject[key],
@tvler
tvler / setStateArraySplice.js
Last active December 10, 2017 08:57
A setState function to immutably splice an array property
// Thanks to https://vincent.billey.me/pure-javascript-immutable-array
import React, { Component } from 'react';
const setStateArraySplice = (
stateKey,
arrayStart,
arrayDeleteCount,
...items
) => ({
@tvler
tvler / onwheneva.js
Last active May 11, 2016 01:51
A way to call a JavaScript function on DOMContentLoaded or after, no rush. Great for non-essential async code.
var test = () => {
console.log('fired on DOMContentLoaded or after');
}
window.onwheneva = test;
document.readyState !== 'loading' ? onwheneva() :
document.addEventListener('DOMContentLoaded', onwheneva);