Cách kiểm tra empty object trong JavaScript?
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:
const emptyObject = {};
Vậy cách để kiểm tra empty object là gì?
Cách kiểm tra empty object trong JavaScript
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ácundefined
. - Đ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 JavaScript
Kế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:
★ 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é:
- Facebook Fanpage: Complete JavaScript
- Facebook Group: Hỏi đáp JavaScript VN
Bình luận