Giả sử bạn đang muốn kiểm tra empty object đối với một giá trị cho trước, với empty object được hiểu như sau: - Đó là một object.
- Và object đó không có một thuộc tính enumerable nào cả.
Nói cách khác, empty
object được biểu diễn như sau: Vậy cách để kiểm tra empty object là gì? Như mình đã nói ở trên, empty object phải thỏa mãn cả 2 điều kiện: là object và không có thuộc tính enumerable. Vì vậy, mình sẽ kiểm tra từng thành phần như sau. Kiểm tra là objectĐể một giá
trị là object: - Điều kiện cần: khác
null và khác undefined . - Điều kiện đủ: hàm khởi tạo
constructor phải là Object .
Một số ví dụ: const a = 1,
b = "hello",
c = [1, 2],
d = { x: 6 },
e = () => {};
console.log(a.constructor); // Number
console.log(b.constructor); // String
console.log(c.constructor); // Array
console.log(d.constructor); // Object
console.log(e.constructor); // Function
Như vậy, mình sẽ viết hàm để kiểm tra object như sau: const isObject = (v) => {
return !!v && v.constructor === Object;
};
Thử kiểm tra lại: const a = 1,
b = "hello",
c = [1, 2],
d = { x: 6 },
e = () => {},
f = null,
g = undefined;
console.log(isObject(a)); // false
console.log(isObject(b)); // false
console.log(isObject(c)); // false
console.log(isObject(d)); // true
console.log(isObject(e)); // false
console.log(isObject(f)); // false
console.log(isObject(g)); // false
Kết quả hiện thị bên trên là đúng với yêu cầu. Tiếp theo, mình sẽ triển khai phần
kiểm tra object là empty. Kiểm tra object là emptyĐể kiểm tra object là empty trong ES6, mình sử dụng phương thức
Object.keys() . Phương thức này trả về một mảng chứa tất cả các thuộc tính enumerable của object. Nếu kết quả trả về là mảng rỗng thì suy ra object đó không chứa thuộc tính enumerable nào. Ví dụ sử dụng Object.keys() : const a = {},
b = { x: 1 },
c = { m: "a", n: "b" };
console.log(Object.keys(a)); // []
console.log(Object.keys(b)); // ["x"]
console.log(Object.keys(c)); // ["m", "n"]
Bây giờ, mình sẽ viết hàm kiểm tra object có empty hay
không như sau: const isEmpty = (v) => {
return Object.keys(v).length === 0;
};
Kiểm tra lại hàm isEmpty() : const a = {},
b = { x: 1 },
c = { m: "a", n: "b" };
console.log(isEmpty(a)); // true
console.log(isEmpty(b)); // false
console.log(isEmpty(c)); // false
Kết quả lần này lại đúng như mong đợi. Tổng hợp cách kiểm tra empty object trong JavaScriptKết hợp 2 đoạn kiểm tra trên, mình suy ra hàm để kiểm tra empty object trong JavaScript
là: const isEmptyObject = (v) => {
return !!v && v.constructor === Object && Object.keys(v).length === 0;
};
Một số ví dụ: const a = 1,
b = "hello",
c = [1, 2],
d = {},
e = () => {},
f = null,
g = undefined,
h = { a: 1, b: 2, c: "3" };
console.log(isEmptyObject(a)); // false
console.log(isEmptyObject(b)); // false
console.log(isEmptyObject(c)); // false
console.log(isEmptyObject(d)); // true
console.log(isEmptyObject(e)); // false
console.log(isEmptyObject(f)); // false
console.log(isEmptyObject(g)); // false
console.log(isEmptyObject(h)); // false
Tham khảo: - Object là gì? Object trong JavaScript
- Object.keys()
★ Nếu bạn thấy bài viết này hay thì hãy theo dõi mình trên Facebook để
nhận được thông báo khi có bài viết mới nhất nhé: |