Skip to content

Instantly share code, notes, and snippets.

View LB-Digital's full-sized avatar

Lucas Bowers LB-Digital

View GitHub Profile
@LB-Digital
LB-Digital / FizzBuzz.js
Last active December 12, 2018 22:31
My attempt at the classic FizzBuzz challenge, with an aim of being as concise as possible
/** FizzBuzz challenge in 3 lines
* "Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”."
*/
for (let i=1; i<=100; i++){
console.log((((i%3==0)?'Fizz':'')+((i%5==0)?'Buzz':''))||i);
}
@LB-Digital
LB-Digital / intersection.js
Last active December 12, 2018 22:31
Find the intersection between two JS arrays of objects, based on an object property (using 'filter' and 'map').
/** Find the intersection between two JS arrays of objects
* finds based on an object property (using 'filter' and 'map')
*/
products = [ // an array of products
{reference:'LOWP8F7H', name:'Nike Blazer', price:120, category:1},
{reference:'3PFH3LDP', name:'Nike Kyrie', price:340, category:1},
{reference:'FGH4P40K', NAME:'Nike Bomber', price:70, category:0}
];
@LB-Digital
LB-Digital / promise-wait-in-for-loop.js
Created September 11, 2018 19:46
Loop through items, awaiting a promise return for each item.
function myFunc(items){
var fn = function addSomethingToItem(item){
return new Promise(resolve => {
myFirstActionFunc()
.then( response =>{
item.value = response;
resolve(item);
@LB-Digital
LB-Digital / promise-chain.js
Last active September 10, 2018 23:22
JS Chaining Promises
function myFunc(things, stuff){
return new Promise( (resolve,reject) =>{ // setup
var result = [];
resolve(result);
}).then( (result) =>{ // Action 1
return new Promise( (resolve,reject) =>{
myFirstFunction(things,stuff)
@LB-Digital
LB-Digital / MojangAPI.js
Last active July 17, 2018 14:37
Basic usage of the Mojang API
// INFO: This script currently relies on the 'request' npm module,
// however this will change in the near future to become independant.
// http://wiki.vg/Mojang_API
const MojangAPI = {
base: "https://api.mojang.com",
getUUID: (username, done)=>{
request(MojangAPI.base + '/users/profiles/minecraft/' + username, (err, response, body)=>{
@LB-Digital
LB-Digital / validEmail.js
Created July 17, 2018 12:24
Simple REGEX based JavaScript function to validate an email address
function validEmail(address) {
// Regular Express from http://emailregex.com
const emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (emailRegex.test(address)) return true;
return false;
}
@LB-Digital
LB-Digital / chainFunctions.js
Created July 17, 2018 12:21
Method for chaining functions in JS, avoiding an ungodly callback pyramid
var chain = [
()=>{
console.log('chain1111');
return chain.shift()();
},
()=>{
console.log('chain22222');
return chain.shift()();
},
@LB-Digital
LB-Digital / JS_Read-JSON-File.js
Created July 7, 2018 00:06
Reading JSON files in Javascript
var xmlhttp = new XMLHttpRequest();
var url = "myFile.json";
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myArr = JSON.parse(this.responseText);
myFunction(myArr);
}
};
xmlhttp.open("GET", url, true);
@LB-Digital
LB-Digital / RandomVector.js
Created July 4, 2018 20:59
Generate a random X,Y component vector with a magnitude in a given range
// Minimum & Maximum values for the speed of the vector
var minSpeed = 5;
var maxSpeed = 20;
// Random vector components in range -1,1
var randX = (Math.random()*2)-1;
var randY = (Math.random()*2)-1;
// Get magnitude of the random vector
var mag = Math.sqrt(Math.pow(randX,2) + Math.pow(randY,2));
// Use magnitude to normalise the vector components
@LB-Digital
LB-Digital / hexToRGBA.js
Created July 4, 2018 16:28
JS function for converting a `HEX` colour code string with an alpha component, to `RGBA`.
function hexToRGBA(hex, opacity){
var rgba = "rgba(";
var inc = Math.abs(hex.length - 5);
for (var i = 1; i < hex.length; i+=inc){
var component = hex[i] + hex[i + (inc-1)];
rgba += parseInt(component, 16) + ",";
}
return rgba + opacity + ")";
}
// abs() gives absolute val (modulus); -5 just produces correct increment (1 or 2, based on length of 4 or 7... #f0f vs #ff00ff)