Skip to content

Instantly share code, notes, and snippets.

View jonurry's full-sized avatar
🎯
Product Developer at AND Digital, Node, TypeScript, AWS, always learning.

Jon Urry jonurry

🎯
Product Developer at AND Digital, Node, TypeScript, AWS, always learning.
View GitHub Profile
@jonurry
jonurry / 5-1 Eloquent Javascript Solutions.js
Created February 20, 2018 10:48
5.1 Flattening (Eloquent JavaScript Solutions)
// 5.1 Flattening
let arrays = [[1, 2, 3], [4, 5], [6]];
console.log(arrays.reduce((array1, array2) => array1.concat(array2)));
// → [1, 2, 3, 4, 5, 6]
@jonurry
jonurry / 5-2 Eloquent Javascript Solutions.js
Last active November 14, 2022 12:47
5.2 Your own loop (Eloquent JavaScript Solutions)
// 5.2 looping version
function loop(value, test, update, body) {
for (let i = value; test(i); i = update(i)) {
body(i)
}
}
loop(3, n => n > 0, n => n - 1, console.log);
// → 3
// → 2
@jonurry
jonurry / 5-3 Eloquent Javascript Solutions.js
Created February 20, 2018 10:57
5.3 Everything (Eloquent JavaScript Solutions)
// 5.3 Everything
//every using a loop
function every(array, test) {
for (let element of array) {
if (test(element) === false) {
return false;
}
}
return true;
}
@jonurry
jonurry / 5-4 Eloquent Javascript Solutions.js
Created February 20, 2018 11:04
5.4 Dominant writing direction (Eloquent JavaScript Solutions)
// 5.4 Dominant Writing Direction
function characterScript(code) {
for (let script of SCRIPTS) {
if (script.ranges.some(([from, to]) => code >= from &&
code < to)) {
return script;
}
}
return null;
@jonurry
jonurry / 6-1 Eloquent Javascript Solutions.js
Created February 28, 2018 12:26
6.1 A Vector Type (Eloquent JavaScript Solutions)
class Vec {
constructor (x, y) {
this.x = x;
this.y = y;
}
plus(v) {
return new Vec(this.x + v.x, this.y + v.y);
}
minus(v) {
return new Vec(this.x - v.x, this.y - v.y);
@jonurry
jonurry / 6-2 Eloquent Javascript Solutions.js
Created February 28, 2018 14:51
6.2 Groups (Eloquent JavaScript Solutions)
class Group {
constructor() {
this.group = [];
}
add(item) {
if (!this.group.includes(item)) {
this.group.push(item);
}
}
delete(item) {
@jonurry
jonurry / 6-3 Eloquent Javascript Solutions.js
Last active February 28, 2018 15:51
6.3 Iterable Groups (Eloquent JavaScript Solutions)
class Group {
constructor() {
this.group = [];
}
add(item) {
if (!this.group.includes(item)) {
this.group.push(item);
}
}
delete(item) {
@jonurry
jonurry / 6-4 Eloquent Javascript Solutions.js
Last active January 20, 2025 11:34
6.4 Borrowing a Method (Eloquent JavaScript Solutions)
let map = {one: true, two: true, hasOwnProperty: true};
// Fix this call
//console.log(map.hasOwnProperty("one"));
console.log(hasOwnProperty.call(map, 'one'));
// → true
@jonurry
jonurry / 7-1 Eloquent Javascript Solutions.js
Created March 1, 2018 16:57
7.1 Measuring a robot (Eloquent JavaScript Solutions)
function runRobot(state, robot, memory) {
for (let turn = 0;; turn++) {
if (state.parcels.length == 0) {
return turn;
}
let action = robot(state, memory);
state = state.move(action.direction);
memory = action.memory;
}
}
@jonurry
jonurry / 7-2 Eloquent Javascript Solutions.js
Created March 7, 2018 11:59
7.2 Robot Efficiency (Eloquent JavaScript Solutions)
function runRobot(state, robot, memory) {
for (let turn = 0; ; turn++) {
if (state.parcels.length == 0) {
return turn;
}
let action = robot(state, memory);
state = state.move(action.direction);
memory = action.memory;
}
}