Những cách truyền mảng vào hàm trong Javascript
Bạn đã biết cách truyền mảng vào hàm trong Javascript chưa? Trong bài này mình sẽ hướng dẫn một số cách để truyền các phần tử của mảng giống như là những tham số của function.
Nếu chỉ truyền mảng như một tham số bình thường thì quá đơn giản, mà bài này mình muốn nói bạn sẽ sử dụng một số hàm hỗ trợ để thiết lập mỗi phần tử của mảng là một tham số sẽ được truyền vào function.
1. Truyền mảng vào hàm javascript thông thường
Cách này thì lúc khai báo function ta sẽ khai báo thêm một vài tham số, mỗi tham số sẽ là những đổi tượng mảng theo yêu cầu của bài toán.
Ví dụ: Viết hàm hiển thị các phần tử của mảng trong console.
Bài viết này được đăng tại [free tuts .net]
function showArrayElement(elements){ console.log(elements); } showArrayElement([1, 2, 3, 4 ,5]);
Nếu viết cách này thì ta xem mảng như là một tham số bình thường.
2. Truyền mảng vào hàm javascript có tham số vô hạn
Hàm có tham số vô hạn là hàm sẽ tiếp nhận mọi tham số truyền vào, điển hình đó là hàm Math.max()
.
Giả sử mình có hàm như sau:
function showFood(a, b, c) { console.log(a); console.log(b); console.log(c); }
Xong mình có một mảng như sau:
const food = ['Apple', 'Rice', 'Milk'];
Bây giờ mình muốn truyền 3 phần tử của mảng như là 3 tham số vào hàm showFood thì có những cách sau:
Cách 1: Truyền mảng vào hàm thủ công.
showFood(food[0], food[1], food[2]);
Cách 2: Truyền mảng vào hàm bằng hàm apply.
showFood.apply(null, food);
Cách 3: Sử dụng ES6
showFood(...food);
Dấu 3 chấm trong ES6 này ta gọi là Spread.
3. Ví dụ truyền mảng vào hàm JS Math.max()
Hàm Math.max() sẽ tiếp nhận danh sách các tham số truyền vào không giới hạn, và nó sẽ trả vè số lớn nhất trong danh sách các số đó.
Nếu bạn có một mảng 100 phần tử thì bạn nên sử dụng cú pháp Spread của ES6 nhé.
const numbers = [5, 7, 3]; Math.max(...numbers); // 7
Nếu bạn có nhiều mảng thì có thể xem mỗi mảng là một tham số.
const one = [1, 2, 3]; const two = [4, 5, 6]; Math.max(...one, ...two); // 6
Trên là thủ thuật đơn giản để truyền một mảng vào hàm trong Javascript.