Code Monk(ey): Kiểm tra Array trong JavaScript

456
07-03-2018
Code Monk(ey): Kiểm tra Array trong JavaScript

Chuyên mục Code Monk(ey) bàn về những lỗi tai hại thường gặp khi code. Những lỗi này thoạt nhìn có vẻ rất hiển nhiên và vặt vãnh. Khi cần kiểm tra một Array có phải là một Array hay không trong JS, một số người sẽ viết đoạn code như thế này:

// Giả sử `kips` là biến cần kiểm tra

if (kips && kips.length) {

...

}

Bạn có thể dễ dàng tìm ra đoạn code như thế này ở hầu hết mọi project JavaScript nào. Nếu tìm không ra thì bạn quả thực rất may mắn.

Ảnh 2.

Đoạn Code trên là từ một "senior JS engineer" đến từ một công ty gia công mà mình có vinh hạnh được làm việc cùng. Hãy cùngBizfly Cloud xem làm sao để kiểm tra được Array trong JavaScript qua bài viết dưới đây.

Vì sao lại viết như vậy? Vì nếu một biến là Array thì nó sẽ không phải null hoặc không undefined, và nó có thuộc tính length? Nghe cũng có vẻ hợp lý?

Nếu dùng để kiểm tra tính hợp lệ của một Array thì đoạn code trên là hoàn toàn sai. Đây là sai lầm lớn nhất và thường gặp nhất của các bạn chưa nắm vững JavaScript. Tại sao?

• Thứ nhất: Giả sử biến kips thực sự là một Array, thì đoạn code trên vẫn sai. Nếu kips = [], tức là thuộc tính length sẽ bằng 0, điều kiện kiểm tra ở trên vẫn sẽ trả về false.

• Thứ hai: Tai hại hơn, nếu kips không phải là một Array mà là một String, ví dụ kips = "Hello";, thì những điều kiện kiểm tra ở trên vẫn hoàn toàn đúng. Một string vẫn luôn có length.

Vậy thì nên dùng gì?

Đơn giản, chỉ cần dùng Array.isArray(). Các bạn có thể đọc thêm về hàm này tại MDN.

Array.isArray([1, 2, 3]); // true

Array.isArray({foo: 123}); // false

Array.isArray('foobar'); // false

Array.isArray(undefined); // false

Hàm này đảm bảo kiểm tra chính xác một Array có là Array hay không, và không bị nhập nhằng bởi các tính chất tương đồng với kiểu dữ liệu khác (như String trong ví dụ trên).

BizFly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.

BizFly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.

Độc giả quan tâm đến các giải pháp của BizFly Cloud có thể truy cập tại đây.

DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud

SHARE