Fizzbuzz javascript w3schools

Ở đây chúng tôi chuyển tiếp trên toán tử

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
3 để nói. "nếu
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
4 là sai, hãy in giá trị lặp lại (
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
5)". Thủ thuật hay và tôi đoán tôi cần chơi nhiều hơn với JavaScript để tiếp thu logic này

Bạn có thể xem các ví dụ khác (từ GitHub) sẽ bao gồm từ những thứ như

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);
}

Không có biến nào ở đây và chỉ cần kiểm tra phép chia cho 15,3 & 5 (cái ở trên của tôi chỉ chia cho 3 & 5, nhưng có một biến phụ, vì vậy tôi đoán nó thuộc về vi điểm cho những người quan tâm hoặc sở thích kiểu dáng)

Đến

for(i=0;i<100;)console.log((++i%3?'':'Fizz')+(i%5?'':'Buzz')||i)

Tất cả đều trực tuyến, chuyển tiếp thực tế rằng

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
0 là một giá trị sai, vì vậy bạn có thể sử dụng giá trị đó cho phiên bản rút gọn của
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
7 (
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
8), ngoài thủ thuật
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
3 mà chúng ta đã thấy trước đây

Đây là phiên bản dễ đọc hơn ở trên, với một số biến

for (var i = 1; i <= 100; i++) {
  var f = i % 3 == 0, b = i % 5 == 0;
  console.log(f ? b ? "FizzBuzz" : "Fizz" : b ? "Buzz" : i);
}

Nói chung, bạn có thể làm điều đó theo nhiều cách khác nhau và tôi hy vọng bạn đã chọn được một số mẹo hay để sử dụng trong JavaScript. )

Nếu bạn là người mới lập trình, FizzBuzz là một nhiệm vụ lập trình cổ điển, thường được sử dụng trong các cuộc phỏng vấn phát triển phần mềm để xác định xem ứng viên có thể viết mã hay không. Đây là nhiệm vụ FizzBuzz cổ điển

Viết chương trình in ra các số từ 1 đến 100. Nhưng đối với bội số của ba in "Fizz" thay vì số và đối với bội số của năm in "Buzz". Đối với các số là bội số của cả ba và năm, hãy in “FizzBuzz”

Âm thanh đủ dễ dàng, phải không?

Vì chúng ta chỉ cần lặp qua từng số từ

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
01 đến
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
02, một trong những giải pháp FizzBuzz đơn giản nhất có thể đạt được với vòng lặp
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
03

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
3

Thật tuyệt vời. Nếu bạn chạy mã này trong bảng điều khiển của mình, bạn sẽ thấy mã này hoạt động tốt. Đây là một đoạn của 16 lần lặp đầu tiên thông qua vòng lặp

Có thể có hàng trăm cách khác nhau để giải FizzBuzz. Một số sạch hơn, nhanh hơn và tốt hơn những cái khác. Một số chỉ đơn giản là điên rồ

Trong bài viết này, chúng tôi sẽ chia nhỏ những gì dường như là giải pháp ngắn nhất cho FizzBuzz (mà tôi có thể tìm thấy)

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
0

Khá vui phải không?

Tuyên bố từ chối trách nhiệm số 1. Đây có lẽ không phải là cách tốt nhất để giải quyết FizzBuzz — Tôi cũng không khẳng định rằng đó là. Bài viết này nhằm giúp bạn chia nhỏ đoạn mã trông phức tạp và hiểu nó đang làm gì

Tuyên bố miễn trừ trách nhiệm #2. Có, bạn có thể xóa

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
04 khỏi giải pháp trên để làm cho nó ngắn hơn. Tuy nhiên, sau đó nó sẽ không hoạt động trong môi trường
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
05

Thật tuyệt, bây giờ chúng ta đã giải quyết được vấn đề đó, hãy mở bảng điều khiển trình duyệt của bạn. Mac. Lệnh + Tùy chọn + J, Windows. Điều khiển+Shift+J

Và sao chép/dán mã. Tôi muốn bạn thấy rằng nó thực sự hoạt động chính xác như đoạn mã khác ở trên — nó giải quyết giải pháp FizzBuzz của chúng tôi. Hoàn hảo

Các khái niệm JavaScript bạn cần hiểu

Mã này sử dụng nhiều khái niệm JavaScript khác nhau để giải FizzBuzz. Trước đây tôi đã viết về tất cả các khái niệm này — vì vậy tôi sẽ đưa ra những giải thích nhỏ trong bài viết này, nhưng vui lòng sử dụng các liên kết này để hiểu thêm nếu có điều gì đó chưa hoàn toàn rõ ràng

  • Logic OR / Đánh giá ngắn mạch
  • Toán tử ternary
  • Giá trị thật và sai
  • Toán tử gia tăng
  • loại cưỡng chế

Phá vỡ giải pháp

Điều đầu tiên chúng ta sẽ làm để hiểu rõ hơn về mã của mình là sắp xếp mọi thứ ra một chút

Một lần nữa, đây là những gì chúng ta bắt đầu với

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
0

Và đây là mã tương tự với một số phòng thở được thêm vào

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
8

Vâng. Bây giờ chúng ta có thể bắt đầu xem mã của chúng ta đang cố gắng làm gì. Rõ ràng chúng ta có một vòng lặp

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
03 bắt đầu từ
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
07 —
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
02. Và trong vòng lặp
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
03 của chúng tôi, chúng tôi đang cố gắng
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
80 thứ gì đó

Hãy xem xét kỹ hơn bộ dấu ngoặc đơn đầu tiên của bạn trong ________ 180 của chúng tôi

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
5

Mã này sử dụng toán tử bậc ba. Nhớ lại rằng cú pháp cho một ternary trông như thế này

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
6

Trong ví dụ này, điều kiện mà chúng tôi đang thử nghiệm là

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
82. Nếu đó là sự thật, thì
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
83 sẽ được trả lại. Nếu
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
82 là sai, thì
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
85 sẽ được trả về

Bây giờ chúng ta đã biết điều gì đang xảy ra trước tiên, chúng ta có thể đào sâu vào tình trạng ternary của mình

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);
}
1

Ở trên, toán tử gia tăng đang được sử dụng. Sử dụng toán tử trước toán hạng

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
86 sẽ tăng toán tử
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
87 trước khi trả về. Điều này có nghĩa là trong lần đầu tiên chúng ta đi qua vòng lặp,
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
87 sẽ tăng từ
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
07 lên
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
01

Bây giờ

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
87 đã tăng lên thành
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
01, mã của chúng tôi sẽ kiểm tra xem liệu
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
53 là đúng hay sai

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
54 sử dụng toán tử còn lại. Toán tử còn lại trả về phần còn lại của một số chia cho một số khác. Trong trường hợp này, chúng tôi sẽ kiểm tra xem phần còn lại của
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
55 là bao nhiêu

Phần còn lại là

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
01 và do đó, điều kiện bậc ba của chúng tôi hiện được đơn giản hóa thành
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
01

for(i=0;i<100;)console.log((++i%3?'':'Fizz')+(i%5?'':'Buzz')||i)
4

Một điều kiện bậc ba là Ngữ cảnh Boolean. Điều này có nghĩa là bất cứ điều gì chúng tôi đang thử nghiệm phải ép buộc giá trị

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
58 hoặc
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
59. Nếu bạn cần lời nhắc về các giá trị trung thực/giả và kiểu ép buộc, hãy xem bài viết này

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
01 cuối cùng không phải là giá trị giả và do đó buộc phải có giá trị trung thực

Chúng tôi hiện có

for(i=0;i<100;)console.log((++i%3?'':'Fizz')+(i%5?'':'Buzz')||i)
8

Vì chúng tôi có một giá trị thực trong điều kiện bậc ba của chúng tôi, nên biểu thức đầu tiên được trả về và kết quả của bộ dấu ngoặc đơn đầu tiên của chúng tôi là một chuỗi trống.

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
83

Đây là nơi chúng ta đang ở bây giờ

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
0

Thật tuyệt vời

Bây giờ chúng ta có thể làm điều tương tự với mã trong bộ dấu ngoặc đơn thứ hai của chúng ta. Mọi thứ đều giống nhau với ba ngoại lệ

  • Chúng tôi không tăng
    function FizzBuzz(aTarget) {
        for (var i = 1; i <= aTarget; i++) {
            var result = "";
            if (i%3 === 0) result += "Fizz";        
            if (i%5 === 0) result += "Buzz";
    
            console.log(result || i);
        }
    }
    
    87. Chúng tôi đã làm điều đó cho lần lặp này của vòng lặp
  • Thay vì chia cho
    function FizzBuzz(aTarget) {
        for (var i = 1; i <= aTarget; i++) {
            var result = "";
            if (i%3 === 0) result += "Fizz";        
            if (i%5 === 0) result += "Buzz";
    
            console.log(result || i);
        }
    }
    
    63, chúng ta chia cho
    function FizzBuzz(aTarget) {
        for (var i = 1; i <= aTarget; i++) {
            var result = "";
            if (i%3 === 0) result += "Fizz";        
            if (i%5 === 0) result += "Buzz";
    
            console.log(result || i);
        }
    }
    
    64
  • Nếu ternary là
    function FizzBuzz(aTarget) {
        for (var i = 1; i <= aTarget; i++) {
            var result = "";
            if (i%3 === 0) result += "Fizz";        
            if (i%5 === 0) result += "Buzz";
    
            console.log(result || i);
        }
    }
    
    65, chúng tôi trả về
    function FizzBuzz(aTarget) {
        for (var i = 1; i <= aTarget; i++) {
            var result = "";
            if (i%3 === 0) result += "Fizz";        
            if (i%5 === 0) result += "Buzz";
    
            console.log(result || i);
        }
    }
    
    66 thay vì
    function FizzBuzz(aTarget) {
        for (var i = 1; i <= aTarget; i++) {
            var result = "";
            if (i%3 === 0) result += "Fizz";        
            if (i%5 === 0) result += "Buzz";
    
            console.log(result || i);
        }
    }
    
    85

Đây là mã trông như thế nào

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
00

Đầu tiên chúng ta kiểm tra xem phần còn lại của

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
68 là bao nhiêu. Đó là
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
01.
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
01 là một giá trị trung thực và do đó, một chuỗi trống
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);
}
11 lại được trả về

Bây giờ chúng tôi đã đánh giá cả hai dấu ngoặc đơn, phương trình của chúng tôi đơn giản hóa đáng kể

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
01

Vì một chuỗi rỗng cộng với một chuỗi rỗng vẫn là một chuỗi rỗng, mã của chúng tôi sẽ giảm hơn nữa

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
02

Bây giờ mã của chúng tôi sử dụng Toán tử logic OR của JavaScript

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);
}
12. Bởi vì một chuỗi rỗng là một trong bảy giá trị giả trong JavaScript, nên chúng tôi hoàn toàn bỏ qua toán hạng đó và chấp nhận bất kể toán hạng thứ hai là gì. Trong mã này, nó là
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
87

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
03

Nhớ lại từ đầu rằng

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
87 chỉ đơn giản là số
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
01 trong lần lặp này, vì vậy đó là thứ được đăng xuất khỏi bảng điều khiển

Nếu bạn nghĩ lại các quy tắc của FizzBuzz, câu trả lời này có ý nghĩa logic và chính xác

Thật tuyệt vời. Bây giờ bạn đã lặp lại thành công một trong 100 vòng lặp trong câu trả lời FizzBuzz ngắn nhất

Tiến thêm một bước nữa

Mã của chúng tôi thực thi hơi khác một chút khi

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
86 chia hết cho cả
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
64 và
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);
}
18Hãy xem qua một ví dụ minh họa điều này

Đây là nơi chúng ta bắt đầu. Xem xét

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
87 bằng với
for(i=0;i<100;)console.log((++i%3?'':'Fizz')+(i%5?'':'Buzz')||i)
40

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
8

Ban đầu, chúng tôi sẽ tăng

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
87 bởi
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
01 lên
for(i=0;i<100;)console.log((++i%3?'':'Fizz')+(i%5?'':'Buzz')||i)
43. Bây giờ chúng ta sẽ kiểm tra xem phần còn lại của
for(i=0;i<100;)console.log((++i%3?'':'Fizz')+(i%5?'':'Buzz')||i)
44 là bao nhiêu

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
05

Vì ba chia thành 15 một số lần bằng nhau, phần còn lại lần này là

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
07

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
07 là một trong bảy giá trị giả trong JavaScript, nên bậc ba của chúng ta sẽ trả về
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
85

Bây giờ chúng ta sẽ thêm

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
85 vào kết quả của bộ dấu ngoặc đơn thứ hai

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
06

for(i=0;i<100;)console.log((++i%3?'':'Fizz')+(i%5?'':'Buzz')||i)
49 cũng có số dư bằng 0. Vì
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
07 là giả, nên trả về
function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
66

Đây là nơi chúng ta đang ở

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
07

Trở thành

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
08

Vì một chuỗi không trống là một giá trị trung thực, hoạt động OR của chúng tôi sẽ rút ngắn mạch và trả về

for(i=0;i<100;)console.log((++i%3?'':'Fizz')+(i%5?'':'Buzz')||i)
82 , sau đó sẽ được ghi vào bảng điều khiển

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
09

Và bạn có nó rồi đấy. Bây giờ bạn đã trải qua hai lần lặp lại rất khác nhau của giải pháp FizzBuzz ngắn nhất

function FizzBuzz(aTarget) {
    for (var i = 1; i <= aTarget; i++) {
        var result = "";
        if (i%3 === 0) result += "Fizz";        
        if (i%5 === 0) result += "Buzz";

        console.log(result || i);
    }
}
0

JavaScript không nhất thiết phải đáng sợ. Nếu bạn đã từng chạy qua mã như thế này mà bạn không hiểu, chỉ cần thử chia nó thành các phần nhỏ hơn và nhỏ hơn cho đến khi bạn có thể hiểu được những gì bạn đang xem

Đi ra ngoài và viết mã

Ghi chú kết thúc

Cảm ơn đã đọc, và hy vọng điều này hữu ích. Nếu bạn muốn biết thêm mẹo và thực hành về cách vượt qua Cuộc phỏng vấn JavaScript, hãy xem. Làm chủ cuộc phỏng vấn Javascript của bạn — Tìm hiểu thuật toán + cấu trúc dữ liệu. Mặt khác, nếu bạn mới tham gia vào lĩnh vực Phát triển Web và cuối cùng muốn tìm hiểu/hiểu về nó, hãy xem Hướng dẫn Cơ bản để Học Phát triển Web Full Stack trong 6 tháng

Tôi xuất bản 4 bài viết về phát triển web mỗi tuần. Vui lòng cân nhắc nhập email của bạn tại đây nếu bạn muốn được thêm vào danh sách email mỗi tuần một lần của tôi hoặc theo dõi tôi trên Twitter