Skip to content

Instantly share code, notes, and snippets.

Brian Redfern bredfern

Block or report user

Report or block bredfern

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View gist:a63e5e6e8564991d22b50124965f5614
While not every language uses the "reduce" keyword you find the concept of reduction in different languages that implement functional code features so in c# its called using the Aggregate keyword but the concept is similar.
So what is a reduction and how does it help us flatten multidimensional lists in general?
You basically get to call a function on every item in an array however you get some special tools to keep track of this array so you have an accumulator that is like a bag where all the values drop in after each array is iterated, you have a current value placeholder an index which tells you which item you're on in the array and you have the ability to set an initial value to send to the first callback call.
Here's an example of how reduce is used with a complex array to flatten it into a simple array:
function flattenDeep(arr1) {
return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);
View index.html
<body layout="column stretch-stretch">
<svg class='defs-only'>
<g id="JB">
<path id="jb-profil"
stroke="#000" fill="#fff" stroke-miterlimit="10" d="M258.9,94.3c1,0.8,1.199,2.6,0.699,6.4
bredfern / index.html
Created Oct 19, 2018
WaveSurfer.js - equalizer with volume slider
View index.html
<h1>WaveSurfer.js - equalizer with volume slider</h1>
<a target="_blank" href="">Example reference on</a>
<div id="waveform"></div>
<div class="container" style="text-align: center">
<button onclick="wavesurfer.playPause()">
bredfern / GStreamer-1.0 some
Created Oct 25, 2017 — forked from strezh/GStreamer-1.0 some
GStreamer-1.0 personal cheat sheet
View GStreamer-1.0 some
# play YUV444 FULL HD file
gst-launch-1.0 -v filesrc location=size_1920x1080.yuv ! \
videoparse width=1920 height=1080 framerate=25/1 format=GST_VIDEO_FORMAT_Y444 ! \
videoconvert ! \
# play YUV422 FULL HD file
gst-launch-1.0 -v filesrc location=size_1920x1080.yuv ! \
bredfern / jquery.scrollToTop.js
Created Jul 13, 2017 — forked from monkeymonk/jquery.scrollToTop.js
ES6 jQuery plugin definition
View jquery.scrollToTop.js
import $ from 'jquery';
import plugin from './plugin';
class ScrollToTop {
constructor(element, options) {
const $element = $(element);
$(window).scroll(function () {
if ($(this).scrollTop() > options.offset) {
bredfern / index.html
Created Jul 6, 2017
Simple clock using requestAnimationFrame
View index.html
<div id="clock"><span id="hours">00</span>:<span id="minutes">00</span>:<span id="seconds">00</span>.<span id="milliseconds">000</span></div>
bredfern / function_invocation.js
Created Apr 3, 2017 — forked from myshov/function_invocation.js
11 Ways to Invoke a Function
View function_invocation.js
(_ => console.log(2))();
eval('console.log(3);');, 4);
console.log.apply(null, [5]);
new Function('console.log(6)')();
Reflect.apply(console.log, null, [7])
Reflect.construct(function(){console.log(8)}, []);, null, [9]);, null, 10);
bredfern / index.js
Created Jan 30, 2017 — forked from Fedia/index.js
🌀 Eddy: Static Websites For The Rest of Us
View index.js
//- polyfills
'use strict';
(function (p) {
if (!p.matches) p.matches = p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector;
if (typeof window.CustomEvent !== 'function') {
window.CustomEvent = function (name, p) {
p = p || {};
You can’t perform that action at this time.