Hàm JavaScript có thể trả về mảng không?

Cho một mảng arr và số n và nhiệm vụ là viết một hàm trả về một mảng có các phần tử lớn hơn n

Thí dụ

Input:   arr = [65, 16, 0, 6, 64, 1, 68]
         n = 16
Output:  [65, 64, 68]
  
Input:   arr = [6, 46, 54, 6, 56, 54, 65, 4, 65]
         n = 50
Output:  [54, 56, 54, 65, 65]

Để đạt được điều này, chúng tôi có các cách tiếp cận sau

Cách tiếp cận 1. Sử dụng mảng. lọc()

Trong cách tiếp cận này, chúng tôi sử dụng Array. phương pháp lọc. Ở mỗi lần lặp, chúng tôi kiểm tra xem giá trị có lớn hơn num hay không

Thí dụ

Javascript




[65, 64, 68]
[54, 56, 54, 65, 65]
7

[65, 64, 68]
[54, 56, 54, 65, 65]
8

 

[65, 64, 68]
[54, 56, 54, 65, 65]
9

[65, 64, 68]
[54, 56, 54, 65, 65]
0

[65, 64, 68]
[54, 56, 54, 65, 65]
0

đầu ra

[65, 64, 68]
[54, 56, 54, 65, 65]

Cách tiếp cận 2. Sử dụng mảng. giảm()

Trong cách tiếp cận này, chúng tôi sử dụng mảng. giảm phương pháp. Khởi tạo bộ tích lũy bằng cách sử dụng một mảng trống và tại mỗi lần lặp lại, hãy kiểm tra xem giá trị hiện tại có lớn hơn num hay không, sau đó nối giá trị hiện tại với bộ tích lũy và trả về giá trị đó, nếu không thì hãy trả lại bộ tích lũy như hiện tại

Thí dụ

Javascript




[65, 64, 68]
[54, 56, 54, 65, 65]
7

[65, 64, 68]
[54, 56, 54, 65, 65]
2

[65, 64, 68]
[54, 56, 54, 65, 65]
3

[65, 64, 68]
[54, 56, 54, 65, 65]
4

[65, 64, 68]
[54, 56, 54, 65, 65]
5
[65, 64, 68]
[54, 56, 54, 65, 65]
6
[65, 64, 68]
[54, 56, 54, 65, 65]
7

[65, 64, 68]
[54, 56, 54, 65, 65]
8
[65, 64, 68]
[54, 56, 54, 65, 65]
9
[65, 64, 68]
[54, 56, 54, 65, 65]
0

[65, 64, 68]
[54, 56, 54, 65, 65]
1
[65, 64, 68]
[54, 56, 54, 65, 65]
6
[65, 64, 68]
[54, 56, 54, 65, 65]
3
[65, 64, 68]
[54, 56, 54, 65, 65]
4

[65, 64, 68]
[54, 56, 54, 65, 65]
8
[65, 64, 68]
[54, 56, 54, 65, 65]
6
[65, 64, 68]
[54, 56, 54, 65, 65]
7
[65, 64, 68]
[54, 56, 54, 65, 65]
8

[65, 64, 68]
[54, 56, 54, 65, 65]
1
[65, 64, 68]
[54, 56, 54, 65, 65]
6
[65, 64, 68]
[54, 56, 54, 65, 65]
1

[65, 64, 68]
[54, 56, 54, 65, 65]
8
[65, 64, 68]
[54, 56, 54, 65, 65]
6

[65, 64, 68]
[54, 56, 54, 65, 65]
5
[65, 64, 68]
[54, 56, 54, 65, 65]
5
[65, 64, 68]
[54, 56, 54, 65, 65]
6

[65, 64, 68]
[54, 56, 54, 65, 65]
6

 

 

[65, 64, 68]
[54, 56, 54, 65, 65]
9

[65, 64, 68]
[54, 56, 54, 65, 65]
0

[65, 64, 68]
[54, 56, 54, 65, 65]
0

đầu ra

[65, 64, 68]
[54, 56, 54, 65, 65]

Cách tiếp cận 3. Sử dụng mảng. phương pháp bản đồ

Trong cách tiếp cận này, chúng tôi lặp lại mảng bằng phương thức bản đồ và ở mỗi lần lặp lại, chúng tôi kiểm tra xem giá trị hiện tại có lớn hơn num hay không? . Nếu sai, hãy thay thế mục đó bằng một chuỗi trống (Hoặc bất kỳ giá trị sai nào). Sau đó, sử dụng phương pháp lọc loại bỏ các giá trị giả

Javascript




[65, 64, 68]
[54, 56, 54, 65, 65]
7

[65, 64, 68]
[54, 56, 54, 65, 65]
2

[65, 64, 68]
[54, 56, 54, 65, 65]
3

[65, 64, 68]
[54, 56, 54, 65, 65]
4

[65, 64, 68]
[54, 56, 54, 65, 65]
5
[65, 64, 68]
[54, 56, 54, 65, 65]
6
[65, 64, 68]
[54, 56, 54, 65, 65]
7____18
[65, 64, 68]
[54, 56, 54, 65, 65]
9

[65, 64, 68]
[54, 56, 54, 65, 65]
6

 

 

[65, 64, 68]
[54, 56, 54, 65, 65]
9

[65, 64, 68]
[54, 56, 54, 65, 65]
0

[65, 64, 68]
[54, 56, 54, 65, 65]
0

đầu ra

[65, 64, 68]
[54, 56, 54, 65, 65]

Cách tiếp cận 4. sử dụng vòng lặp for

Theo cách tiếp cận này, chúng tôi tạo một mảng trống và lặp lại mảng đã cho bằng cách sử dụng vòng lặp forEach và ở mỗi lần lặp lại, chúng tôi thực hiện biểu thức với toán tử và trong đó toán tử đầu tiên kiểm tra giá trị hiện tại có lớn hơn num hay không nếu nó trả về sai thì thao tác mới không được thực hiện

Các hàm JS chỉ có thể trả về một giá trị cùng một lúc. Nhưng có một cách sử dụng câu lệnh return để trả về nhiều giá trị. Học mẹo

23 tháng 3 năm 2022 3 phút đọc

Bài đăng này miễn phí cho tất cả mọi người đọc nhờ vào sự đầu tư mà những người đăng ký Blog Mindsers đã thực hiện trong ấn phẩm độc lập của chúng tôi. Nếu công việc này có ý nghĩa với bạn, tôi mời bạn trở thành người đăng ký ngay hôm nay

Một bài viết đơn giản và nhanh chóng ngày hôm nay để trả lời một câu hỏi cụ thể ngoài bài viết trước. Làm cách nào để trả về một số giá trị từ một hàm duy nhất trong JavaScript?

Câu trả lời ngắn gọn là. "Điều đó là không thể". Nhưng như bạn biết đấy, nếu đó là nhu cầu thực sự, các nhà phát triển sẽ tìm ra cách để làm điều đó. Và, đó là những gì chúng tôi sẽ giải thích trong bài viết này

Gói nhiều giá trị vào một giá trị khác

Như chúng ta đã thấy ở trên, chúng ta không thể trả về nhiều giá trị cùng một lúc. Lý do cho điều này là chúng ta đang trả về các giá trị bằng cách sử dụng câu lệnh

[65, 64, 68]
[54, 56, 54, 65, 65]
7. Câu lệnh này chỉ có thể xử lý một giá trị tại một thời điểm và chúng tôi chỉ có thể sử dụng một câu lệnh
[65, 64, 68]
[54, 56, 54, 65, 65]
7 cho mỗi hàm (câu lệnh thứ hai và tiếp theo là một phần của mã chết)

Nhưng có những giá trị có thể chứa những giá trị khác, ví dụ như mảng hoặc đối tượng chẳng hạn. Do đó, việc trả về một mảng giá trị hoặc một đối tượng được tạo chỉ dành cho dịp này như được thấy bên dưới sẽ là giải pháp của chúng tôi để vượt qua các giới hạn của JavaScript

[65, 64, 68]
[54, 56, 54, 65, 65]
2

Hai tùy chọn này cho phép bạn truy xuất nhiều giá trị cùng một lúc bằng cách biết thứ tự của chúng trong cấu trúc dữ liệu hoặc bằng cách biết tên của chúng

[65, 64, 68]
[54, 56, 54, 65, 65]
3

Loại Tuple trong TypeScript

Các nhà phát triển TypeScript đã cố gắng cấu trúc các trường hợp (như trường hợp này) trong đó chúng tôi cần thu thập các giá trị nhất định để sử dụng chính xác và thường bị giới hạn thời gian. Họ đã thêm một loại mới vào ngôn ngữ. bộ dữ liệu

Từ điển mô tả một bộ dữ liệu là “một cấu trúc dữ liệu bao gồm một số phần”. Nó hơi mơ hồ, nhưng tài liệu TypeScript bổ sung

Loại tuple là một loại khác của loại
[65, 64, 68]
[54, 56, 54, 65, 65]
9 biết chính xác nó chứa bao nhiêu phần tử và chính xác loại nó chứa ở các vị trí cụ thể

Vì vậy, giống như các mảng của chúng tôi giống như dữ liệu mà chúng tôi muốn trả về tất cả cùng một lúc. Nhìn vào TypeScript tương đương với các ví dụ trước

[65, 64, 68]
[54, 56, 54, 65, 65]
4

Nhìn chung, nó chỉ là một mảng giống như mảng chúng ta đã sử dụng trong JavaScript, nhưng ở đây TypeScript sẽ đảm bảo rằng bạn chỉ chuyển hai giá trị vào mảng đó. Nó cũng sẽ kiểm tra xem chuỗi ký tự ở vị trí đầu tiên và số ở vị trí thứ hai

💡

Điều đáng nói ở đây là TypeScript cung cấp cho chúng ta phương tiện để viết mã chặt chẽ hơn sẽ ít có lỗi hơn.

Hơn nữa, chữ ký hàm chỉ ra rằng nó trả về một bộ bao gồm một

[65, 64, 68]
[54, 56, 54, 65, 65]
0 và một
[65, 64, 68]
[54, 56, 54, 65, 65]
1. Điều này cho phép bạn biết những gì mong đợi từ hàm (đặc biệt nếu bạn chưa viết hàm) và tiếp tục tận dụng lợi thế của các loại phần khác nhau của bộ dữ liệu trong mã tiếp theo của bạn

Đơn giản hóa với phá hủy

Như tôi đã nói về phá hủy trong một bài viết trước, tôi quyết định thêm phần ngắn này để cho thấy rằng chúng ta có thể làm cho các ví dụ trên dễ chịu hơn một chút

Rõ ràng, chúng ta sẽ thêm một số “đường cú pháp” vào mã của chúng ta. Hoạt động sẽ không thay đổi. Nó sẽ “đẹp” hơn hoặc thân thiện hơn khi sử dụng

[65, 64, 68]
[54, 56, 54, 65, 65]
5
[65, 64, 68]
[54, 56, 54, 65, 65]
6

Nó không thay đổi nhiều, nhưng ít nhất chúng ta có ấn tượng rằng chúng ta đang thực sự nhận được hai giá trị từ hàm và nó đã được lên kế hoạch ban đầu bởi JavaScript

Tôi đã không sử dụng tên “datum1” và “datum2” trong ví dụ về việc sử dụng đối tượng, mặc dù biết rằng hoàn toàn có thể làm được điều đó nhờ các bí danh. Vui lòng đọc bài viết về phá hủy để biết thêm thông tin

Tham gia cùng hơn 100 nhà phát triển và doanh nhân và nhận thông báo về mọi nội dung mới

Đi nào

Không có thư rác bao giờ. Hủy đăng ký trong một cú nhấp chuột bất cứ lúc nào

Nếu bạn có bất kỳ câu hỏi hoặc lời khuyên nào, vui lòng tạo bình luận bên dưới. Tôi sẽ thực sự vui mừng để đọc bạn. Ngoài ra nếu bạn thích bài viết này, đừng quên chia sẻ nó với bạn bè của bạn. Nó giúp rất nhiều

Hàm có thể trả về một mảng không?

Mặc dù các hàm không thể trả về mảng , nhưng mảng có thể được bao bọc trong các cấu trúc và hàm có thể trả về cấu trúc do đó mang theo mảng đó.

Phương thức nào trả về mảng trong JS?

Phương thức bộ lọc filter method trả về một mảng mới có tất cả các phần tử thỏa mãn điều kiện kiểm tra được cung cấp. Phương thức bộ lọc lấy hàm gọi lại làm đối số đầu tiên và thực thi hàm gọi lại cho mọi phần tử của mảng. Mỗi giá trị phần tử mảng được truyền dưới dạng tham số đầu tiên cho hàm gọi lại.

Tại sao các hàm không thể trả về mảng?

Không thể sao chép kiểu mảng trần trong ngôn ngữ C vì lý do lịch sử chủ yếu . Vì lý do này, không thể khởi tạo mảng bằng mảng, gán mảng cho mảng, truyền mảng theo giá trị dưới dạng tham số hoặc trả về mảng từ hàm.

Chúng ta có thể quay lại từ một hàm JavaScript không?

Thông thường, các hàm JavaScript trả về một giá trị duy nhất, nhưng chúng ta có thể trả về nhiều giá trị bằng cách sử dụng mảng hoặc đối tượng . Để trả về nhiều giá trị, chúng ta có thể đóng gói các giá trị dưới dạng thuộc tính của đối tượng hoặc thành phần mảng.