简单而又复杂的FizzBuzz

"简单而又复杂的FizzBuzz"

Posted by ZWW on March 30, 2018

“FizzBuzz”

FizzBuzz”题目,就是:给你1——100的数字,如果能被3整除就将该数字改为Fizz,如果能被5整除就改为Buzz,如果既能被3又能被5整除就改为FizzBuzz。

“首先想到用if”

const calc = (new Array(100).fill(1)).map((n, i) => {
        i = i + 1;
        if (i % 3 === 0 && i % 5 === 0) {
            return 'FizzBuzz';
        } else if (i % 3 === 0) {
            return 'Fizz';
        } else if (i % 5 === 0) {
            return 'Buzz';
        }
        return i;
    })
    console.log(calc.join(', ').trim());

“三木运算?”

 (new Array(100).fill(1)).map((n, i) => {
        i = i + 1;
        console.log(i);
        return (i % 3 == 0 && i % 5 == 0 ? 'FizzBuzz' : (i % 3 == 0 ? 'Fizz' : (i % 5 == 0 ? 'Buzz' : i)))
    })

“都不用?”

const simpleRange = (start, len) =>
        [...Array(len)].map((_, k) => start + k);
        
const calculateFizzBuzz3 = (start, len) => {
let result = simpleRange(start, len).map(v =>
    ((v % 3 === 0 && v % 5 === 0) && 'FizzBuzz')
    || ((v % 3 === 0) && 'Fizz')
    || ((v % 5 === 0) && 'Buzz')
    || v
);

console.log(result.join(', ').trim());
};

的确,有点意思,最后一种我不会,哈哈哈

参考