Skip to content

Instantly share code, notes, and snippets.

function getLuckyNumber(){
const userInput = prompt("Enter your lucky number");
const parsedValue = parseInt(userInput);
if(isNan(parsedValue) || parsedValue <=0){
throw { message: "Invalid user input"};
}
return parsedValue;
}
class Error {
constructor(message) {
this.message = message;
this.name = "Error";
this.stack = <call stack>;
}
}
class ValidationError extends Error {
constructor(message) {
super(message);
this.name = "ValidationError";
}
}
class PropertyRequiredError extends ValidationError {
constructor(property) {
super("No property: " + property);
this.name = "PropertyRequiredError";
this.property = property;
}
}
try {
luckyNumber = getLuckyNumber();
} catch(error){
console.log(error);
luckyNumber = Math.floor(Math.random() * 101);
alert("You entered something wrong, a random value will be used.");
}
function createCar(json) {
let car = JSON.parse(json);
if (!car.age) {
throw new PropertyRequiredError("age");
}
if (!car.color) {
throw new PropertyRequiredError("color");
}
if (!car.brandName) {
try {
let car = createCar ('{ "color": black-yellow}');
} catch (err) {
if (err instanceof ValidationError) {
alert("Invalid data: " + err.message);
alert(err.name); // PropertyRequiredError
alert(err.property); // name
} else {
throw err;
}
let pipeline = [increment, double, decrement];
const result = pipeline.reduce(function(total, func) {
return func(total);
}, 8);
// result: 17
const apples = ['green', 'red', 'red', 'yellow', 'red', 'yellow', 'green', 'green'];
var appleMap = apples.reduce((prev, apple) => {
if (prev[apple] >= 1) prev[apple]++;
else prev[apple] = 1;
return prev;
}, {});
console.log(appleMap);
// result: {green: 3, red: 3, yellow: 2}
const apples = ['green', 'red', 'red', 'yellow', 'red', 'yellow', 'green', 'green'];
var appleMap = apples.reduce((prev, apple) => {
if (prev[apple] >= 1) prev[apple]++;
else prev[apple] = 1;
return prev;
}, {});
console.log(appleMap);
// result: {green: 3, red: 3, yellow: 2}