Mảng javascript fizzbuzz

Trong bài đăng trên blog này, tôi sẽ giải thích cách giải quyết tác vụ, cũng như cách lặp lại một mức độ phức tạp hơn, bằng cách tạo một hàm nhận các tham số tùy chỉnh cho cả chuỗi và số nguyên. Điều này xuất hiện gần đây như một thử thách chiến tranh mật mã và sau khi đập đầu vào tường gạch một lúc, tôi đã tìm ra giải pháp bên dưới

Giống như tất cả các vấn đề mã hóa, cách tốt nhất để tiếp cận nhiệm vụ này là chia nó thành các phần nhỏ hơn

Bước 1. Tạo mảng số của chúng tôi

Bước đầu tiên của chúng tôi là tạo một chức năng trống, chức năng này cuối cùng sẽ chạy tất cả mã của chúng tôi

Tiếp theo, chúng ta khai báo một mảng trống trong hàm

Cho đến nay, rất đơn giản

Bước tiếp theo của chúng tôi giới thiệu phần logic đầu tiên của chúng tôi. Chúng tôi muốn tạo một bộ đếm chạy từ 1 đến 100 và đặt 'cái gì đó' vào mảng cho mỗi số đó. Như trong phần phác thảo, chúng tôi muốn đây là số nguyên, “fizzbuzz”, “fizz” hoặc “buzz” tùy thuộc vào số đó là gì. Chúng tôi làm điều này với một vòng lặp for

Vòng lặp này đặt một biến 'i', mà chúng ta sẽ sử dụng làm bộ đếm của mình. Chúng tôi đặt i thành 1, vì chúng tôi muốn chạy từ 1 đến 100, thay vì 0 đến 100. Sau đó, chúng tôi đặt mệnh đề kết thúc của mình, bằng cách nói rằng miễn là độ dài của mảng, 'arr' nhỏ hơn 100, hãy chạy mã trong vòng lặp. Cuối cùng, chúng tôi tăng biến i của mình lên 1 mỗi lần chúng tôi chạy mã

Nếu chúng ta chỉ muốn trả về số 1 đến 100, chúng ta có thể làm như vậy ở giai đoạn này bằng cách gọi phương thức mảng 'push' trên mảng 'arr', như thế này

Đây là kết thúc của bước đầu tiên của chúng tôi

Bước hai. Thay thế số của chúng tôi bằng “fizz” và “buzz”

Để thay thế các số của chúng tôi bằng 'Fizz' và "Buzz", chúng tôi cần thực hiện thêm một bước và thiết lập câu lệnh if/else

Chúng tôi sử dụng toán tử modulo ở đây để tìm ra con đường nào sẽ đi. Modulo trả về phần còn lại của một số nguyên, vì vậy trong tiếng Anh đơn giản, những gì chúng tôi đang nói ở đây là

Nếu số [i] chia cho 3 không có số dư, hãy đẩy chuỗi 'fizz' đến vị trí chỉ mục tương ứng trong mảng

Ngược lại, nếu số [i] chia cho 5 không có số dư thì đẩy chuỗi ‘buzz’ đến vị trí chỉ số tương ứng trong mảng

Cuối cùng, nếu cả hai điều kiện này đều không đúng, chỉ cần đẩy số [i] vào mảng

Chúng ta đã đi gần hết, nhưng chúng ta muốn in “FizzBuzz” nếu số đó chia hết cho cả 3 VÀ 5. May mắn thay, bước bổ sung này rất dễ dàng

Tất cả những gì chúng tôi làm là thêm một điều kiện bổ sung vào đầu vòng lặp. Điều này nói

“Nếu số [i] chia hết cho 3 VÀ số [i] chia hết cho 5, đẩy chuỗi “FizzBuzz” vào mảng”

Nếu điều kiện này không đúng, thì chúng ta sẽ xử lý phần còn lại của câu lệnh if/else như bình thường

mã cuối cùng của chúng tôi trông như thế này

Lưu ý rằng chúng tôi trả lại mảng của mình là điều cuối cùng chúng tôi làm, để chúng tôi thực sự trả về nội dung

và nếu chúng tôi chạy nó, đây là kết quả chúng tôi nhận được

Bước 3. thêm thông số tùy chỉnh

Chúng tôi có mã cơ bản đang hoạt động, nhưng chúng tôi muốn thiết lập chức năng của mình để nhận và trả về các tham số tùy chỉnh

Điều đầu tiên chúng ta sẽ làm là mở rộng hàm của mình với bốn đối số. Chúng tôi sẽ cho phép những giá trị này được đặt tại thời điểm hàm được gọi, nhưng cũng đặt các giá trị mặc định

Đây là một cách để đặt các đối số tùy chọn trong một hàm. Chúng tôi đã áp dụng các giá trị mặc định của mình, nhưng chúng có thể bị ghi đè khi hàm được gọi

Đối với bước cuối cùng, tất cả những gì chúng ta muốn làm là đảm bảo rằng các giá trị trả về được đặt khi hàm được gọi. Để làm điều này, chúng tôi chỉ muốn đảm bảo rằng thay vì đẩy một chuỗi đã đặt vào mảng, như chúng tôi đã làm trong ví dụ trước, chúng tôi đang đẩy bất kỳ thứ gì có trong các đối số hàm của chúng tôi

Chúng tôi thay thế 3 và 5 được mã hóa cứng trong if/else bằng n1/n2, để lấy đầu vào tùy chỉnh [hoặc giá trị mặc định nếu giá trị này không được cung cấp] và chúng tôi thay thế các chuỗi “fizzbuzz” được mã hóa cứng bằng các đối số str1/str2

Đây là cách mã cuối cùng của chúng ta sẽ trông như thế nào

Bây giờ chúng ta có thể chạy mã với các đối số tùy chỉnh của mình, như thế này

Và đây là kết quả chúng ta nhận được, với log “hello” cho tất cả các số chia hết cho 2 và “helloworld” cho tất cả các số chia hết cho 2 và 10

Chúng ta cũng có thể gọi các số đơn từ mảng của mình như thế này

sẽ chỉ trả về bất cứ thứ gì ở chỉ mục 19, dẫn đến

Hy vọng rằng điều này hữu ích cho bất kỳ ai đang tìm cách giải quyết một thử thách FizzBuzz tương tự. Nếu bạn có bất kỳ câu hỏi nào [hoặc một giải pháp tốt hơn. ] Hãy cho tôi biết ở phần bình luận

Tôi từng là Chuyên viên phân tích dữ liệu tràn ngăn xếp, đang chuyển sang lĩnh vực phát triển và đang tích cực tìm kiếm vị trí nhà phát triển javascript cấp dưới ở London [Anh], vì vậy nếu bạn đang tuyển dụng và thích giao diện giải pháp của tôi, vui lòng gửi email cho tôi

Chủ Đề