-
-
Save jaysonrowe/1592432 to your computer and use it in GitHub Desktop.
for (var i=1; i <= 20; i++) | |
{ | |
if (i % 15 == 0) | |
console.log("FizzBuzz"); | |
else if (i % 3 == 0) | |
console.log("Fizz"); | |
else if (i % 5 == 0) | |
console.log("Buzz"); | |
else | |
console.log(i); | |
} |
Not the smallest / most elegant solution but when that pesky product manager wants to add "boop" on 7 it won't require a refactor
const fizzBuzz = (duration = 100) => Array(duration).fill().map((_, i) => {
i++
const subs = new Map([[15, "Fizzbuzz"], [3, "Fizz"], [5, "Buzz"] ])
const match = Array.from(subs.keys()).find(k => i % k === 0)
return match ? `${subs.get(match)}` : `${i}`;
})
console.log(fizzBuzz())
for (var i = 1; i <= 100; i++) {
switch (true) {
case i % 5 == 0 && i % 3 == 0:
console.log("FizzBuzz");
break;
case i % 5 == 0 && i % 3 != 0:
console.log("Buzz");
break;
case i % 3 == 0 && i % 5 != 0:
console.log("Fizz");
break;
default:
console.log(i);
break;
}
}
Thanks man, was looking for switch case implementation on this one.
for (let i = 1; i <= 100; i++) {
const fizz = i % 3 === 0 ? "Fizz" : ""
const buzz = i % 5 === 0 ? "Buzz" : ""
console.log(`${fizz}${buzz}` || i)
}
const fizzBuzz = (num, rules) => {
const result = [];
for (let i = 1; i <= num; i++) {
result.push(applyRules(i, rules));
}
return result;
};
const applyRules = (num, rules) => {
const output = rules.reduce((result, rule) => {
if (rule.condition(num)) {
result += rule.output;
}
return result;
}, '');
return output || num;
};
// Example usage:
const isMultipleOf = (n) => (num) => num % n === 0;
const rules = [
{ condition: isMultipleOf(3), output: 'Fizz' },
{ condition: isMultipleOf(5), output: 'Buzz' },
];
const resultArray = fizzBuzz(15, rules);
console.log(resultArray);
//para imprimir en la página web const n= window.prompt("Ingrese un número: "); for(i=1; i<=n; i++) if(i%3==0 && i%5==0){ console.log("FizzBuzz\n"); } else if(i%3==0 && i%5!=0){ console.log("Fizz\n"); } else if(i%3!=0 && i%5==0){ console.log("Buzz\n"); } else{ console.log(i\n); }
Which way would be "better regarded" as a best answer, by using for loops or by using .forEach() and .map()? Or it really does not matter as long as the program executes what is expected of it? Cheers
@iuliaGrig The answer is: It depends.
In this example, it's so simple that it doesn't matter for most intents and purposes. For more complex examples a rule of thumb could be:
.forEach
and.map
are generally more readable (even though plenty of people already might disagree)..forEach
should be used if there are side-effects to the function (likeconsole.log
),.map
must be used if you want to create a new list (.forEach
doesn't return anything)for
-loops are generally more performant, even though the difference only really matters for very large lists
@Megafry If you want
fizzbuzz
to be side-effect free, it still makes sense to separate the two. Also, I usually wouldn't expectmap
to have a side effect — that's whatforEach
is for. It is an additional traversal, but in most cases, the gain in clarity should outweigh the performance hit.