Đối tượng trống có phải là giả mạo javascript không?

Một điều thú vị khi viết mã JavaScript là việc tạo và sử dụng các đối tượng đơn giản như thế nào. Có rất nhiều cách sử dụng sáng tạo cho các đối tượng này ngoài việc lưu trữ và truy xuất các giá trị được khóa

Tuy nhiên, một điều phổ biến trong việc sử dụng các đối tượng là cần phải dễ dàng kiểm tra xem một đối tượng có trống không. Nói cách khác, làm thế nào bạn có thể biết liệu một đối tượng có bất kỳ thuộc tính được xác định nào không?

Bước đầu tiên sẽ là tạo một đối tượng và thêm một số thuộc tính cho nó

const người = {tên. "john doe", tuổi. 32,};

Bây giờ bạn đã có một đối tượng để làm việc, bạn có thể kiểm tra xem nó có bất kỳ thuộc tính nào không

thuộc tính const = Đối tượng. chìa khóa(người);

Bạn có thể sử dụng các đối tượng và trong trường hợp này, chúng tôi sử dụng phương thức Object.keys() chỉ trả về một mảng chứa tất cả các tên thuộc tính mà đối tượng có. Bây giờ chỉ cần kiểm tra xem độ dài của mảng đó có bằng 0 không

const isEmpty = thuộc tính. chiều dài === 0;

Đó là khá nhiều nhưng có khả năng một vấn đề. Nếu bạn thử điều này bằng cách sử dụng một đối tượng là undefined hoặc null, bạn sẽ gặp lỗi

Đối tượng trống có phải là giả mạo javascript không?

Hãy tạo một hàm bằng cách sử dụng một số tính năng mới hơn của JavaScript để kiểm tra một cách an toàn xem một đối tượng có trống không

chức năng isEmpty (anObject) { trở lại. Sự vật. khóa (anObject ?? {}). chiều dài; . log(isEmpty({})); . nhật ký (isEmpty ({ khóa. "giá trị" })); . log(isEmpty(null));

Có một vài điều cần lưu ý ở đây. Thay vì kiểm tra xem độ dài của mảng khóa của đối tượng có phải là 0 hay không, bạn chỉ có thể sử dụng giá trị độ dài của nó cộng với toán tử ! để thay đổi nó thành kiểu boolean một cách hiệu quả. Vì 0 là sai và bất kỳ giá trị nào khác cho độ dài là đúng, nên bạn sẽ nhận được giá trị boolean mong muốn, trong trường hợp này là đúng nếu đối tượng trống và sai nếu không. Thay vào đó, bạn có thể sử dụng !! nếu bạn muốn chuyển đổi chức năng để xác định xem một đối tượng có trống không

Phần thú vị khác ở đây là việc sử dụng toán tử hợp nhất nullish ??. Toán tử này đã được giới thiệu trong ECMAScript 2020 và có hành vi tương tự như toán tử || nhưng không có khả năng xảy ra kết quả ngoài ý muốn. Sử dụng ?? ở đây để đảm bảo không có lỗi nào xảy ra nếu đối tượng đã cho là null hoặc undefined

Toán tử ?? chỉ trả về vế phải của biểu thức nếu vế trái là null hoặc undefined trong khi toán tử || sẽ trả về vế phải nếu vế trái là bất kỳ giá trị giả nào

Ở đó bạn có nó. Đây là một cách đơn giản nhưng hiệu quả để kiểm tra xem một đối tượng có trống trong JavaScript hay không. Bạn có thể sử dụng hàm undefined4 ở trên để kiểm tra một cách an toàn xem một đối tượng có trống hay không hoặc sử dụng phương pháp trực tiếp hơn là undefined5 nếu bạn không lo lắng về việc đối tượng có khả năng là null hoặc undefined. Dù bằng cách nào, chiến lược là đơn giản

Lấy các khóa của đối tượng đã cho và nếu không có thì đối tượng phải trống. Chọn bất kỳ phương pháp nào phù hợp nhất với bạn và cơ sở mã của bạn, đồng thời, như mọi khi, vui lòng để lại nhận xét nếu bạn thấy phương pháp này hữu ích hoặc có bất kỳ đề xuất nào về cách tốt hơn để thực hiện việc này

Trong JavaScript, các đối tượng là một loại dữ liệu khác thực sự hữu ích khi lưu trữ các bộ sưu tập có khóa khác nhau và các thực thể phức tạp. Thông thường, chúng tôi được yêu cầu kiểm tra xem một đối tượng có trống không, chẳng hạn, chúng tôi có thể cần kiểm tra đối tượng trống nếu chúng tôi nhận được phản hồi JSON từ máy chủ trước khi xử lý nó. Thật không may, không có giải pháp trực tiếp cho nó. Tuy nhiên, có nhiều kỹ thuật khác nhau để thực hiện việc kiểm tra này. Ngoài các phương thức gián tiếp này, một số thư viện JavaScript thường được sử dụng trong các dự án cung cấp chức năng tích hợp để kiểm tra xem một đối tượng có trống không

Hãy để chúng tôi xem, các kỹ thuật khác nhau và các phương thức tích hợp có sẵn trong thư viện JavaScript phổ biến để giúp chúng tôi kiểm tra xem một đối tượng có trống không

Con đường hiện đại (ES5+)

Trong phần này, chúng ta sẽ thấy các phương thức khác nhau mà chúng ta có thể sử dụng trong các trình duyệt hiện đại hỗ trợ phiên bản ES5 để kiểm tra xem một đối tượng trong JavaScipt có trống không

1. đối tượng. keys() Phương thức

đối tượng. keys() phương thức trong JavaScript trả về một mảng gồm vô số tên thuộc tính của đối tượng được truyền cho phương thức dưới dạng tham số. Nếu phương thức trả về một mảng trống, thì điều đó có nghĩa là đối tượng đã cho trống vì nó không có khóa. Bằng cách này, chúng tôi có thể kiểm tra xem đối tượng có rỗng không. Hãy cùng xem đoạn mã sau để hiểu rõ hơn về trường hợp này

function isObjEmpty (obj) {
    return Object.keys(obj).length === 0;
}

var emptyObject = {};
var object = {"foo": "bar"};

console.log(isObjEmpty(emptyObject))
console.log(isObjEmpty(object))

đầu ra

Ở đây, bạn có thể quan sát từ đầu ra rằng đối tượng đầu tiên emptyObject khi được chuyển đến hàm isObjEmpty trả về true vì Object. keys() phương thức trả về một mảng trống cho đối tượng emptyObject. Tuy nhiên, đối tượng đối tượng có thuộc tính foo được đính kèm với nó và do đó, phương thức Object. keys() sẽ trả về một mảng có độ dài lớn hơn một

Ngoài ra, hãy cẩn thận không chuyển các giá trị null hoặc không xác định cho hàm isObjEmpty. Chúng sẽ dẫn đến việc hàm đưa ra một ngoại lệ như trong ví dụ được đề cập bên dưới

console.log(isObjEmpty(null));

2. Sử dụng đối tượng. phương thức value()

giống như. keys(), nếu một đối tượng không có giá trị nào được liên kết với nó (bao gồm cả không xác định và null), có nghĩa là đối tượng trống. Chúng ta có thể sử dụng. Các giá trị () phương thức của các đối tượng để xác định và xác định xem một đối tượng có trống hay không

function isObjEmpty (obj) {
    return Object.values(obj).length === 0 && obj.constructor === Object;
}

var emptyObject = {};
var object = {"foo": "bar"};

console.log(isObjEmpty(emptyObject))
console.log(isObjEmpty(object))

đầu ra

3. đối tượng. Phương thức getOwnPropertyNames()

Đối tượng phương thức. getOwnPropertNames() trả về một mảng gồm tất cả các thuộc tính của một đối tượng được truyền cho hàm. Sự khác biệt giữa đối tượng. getOwnPropertNames() và đối tượng. values() là phương thức Object. Phương thức getOwnPropertNames() cũng xem xét các thuộc tính không thể đếm được của đối tượng, trong khi phương thức Object. values() chỉ xem xét các thuộc tính có thể đếm được. Sự khác biệt xảy ra khi đối tượng chứa thuộc tính không thể đếm được

Hãy xem ví dụ sau

function isObjEmptyUsingGetOwnPropertyNames (obj) {
    return Object.getOwnPropertyNames(obj).length === 0;
}

var emptyObject = {};
var object = {"foo": "bar"};

console.log(isObjEmptyUsingGetOwnPropertyNames(emptyObject))
console.log(isObjEmptyUsingGetOwnPropertyNames(object))

đầu ra

Ở đây, như bạn có thể thấy, việc kiểm tra xem một đối tượng có trống không hoạt động tương tự như khi sử dụng cả hai đối tượng. getOwnPropertNames() và đối tượng. giá trị(). Sự khác biệt xảy ra khi chúng ta sử dụng các đối tượng mà chúng có các thuộc tính không thể đếm được, ví dụ RegExp

console.log(isObjEmpty(new RegExp()))
console.log(isObjEmptyUsingGetOwnPropertyNames(new RegExp()))

Ghi chú. Cả hai phương thức Object. getOwnPropertNames() và đối tượng. values() không thành công trong trường hợp null hoặc không xác định

4. Lặp lại các thuộc tính đối tượng Với for…in

Nếu trình duyệt đã cũ và không hỗ trợ các phương thức đối tượng như keys(), values() hoặc các mục nhập, chúng ta có thể sử dụng các vòng lặp for để lặp lại các thuộc tính đối tượng của chúng và xác định xem đối tượng có trống hay không. Hãy xem ví dụ bên dưới để hiểu cách chúng ta có thể sử dụng vòng lặp for để kiểm tra xem đối tượng có trống không javascript

function isObjEmpty (obj) {
    for (let property in obj) {
        if (obj.hasOwnProperty(property)) {
            // object is not empty
            return false;
        }
    }
    return true;
}

var emptyObject = {};
var object = {"foo": "bar"};

console.log(isObjEmpty(emptyObject))
console.log(isObjEmpty(object))

đầu ra

Ở đây, chúng tôi đang lặp lại các thuộc tính đối tượng bằng cách lặp rõ ràng qua các thuộc tính đối tượng và trả về true nếu không tìm thấy thuộc tính nào và trả về false nếu chúng tôi tìm thấy thuộc tính đối tượng

5. JSON. xâu chuỗi lại

JSON. hàm stringify chuyển đổi một đối tượng JavaScript thành chuỗi JSON. Chúng ta có thể sử dụng phương thức này để chuyển đổi một đối tượng thành một chuỗi và so sánh nó với một chuỗi được tính bằng cách chuyển đổi một đối tượng rỗng thành một chuỗi i. e. , {}. Taka xem ví dụ sau

function isObjEmpty (obj) {
    return JSON.stringify(obj) === '{}';
}

var emptyObject = {};
var object = {"foo": "bar"};

console.log(isObjEmpty(emptyObject))
console.log(isObjEmpty(object))

đầu ra

Một điều cần lưu ý ở đây là JSON đó. stringify sẽ không đưa ra một ngoại lệ trong trường hợp đầu vào null. Thay vào đó, nó trả về false, đây có thể không phải là kết quả mà chúng ta mong đợi từ hàm của mình

console.log(isObjEmpty(null))

6. Mục tiêu. mục()

đối tượng. phương thức entry() trong JavaScript trả về một mảng các mảng, trong đó mỗi phần tử là một cặp thuộc tính khóa-giá trị của một đối tượng. Ví dụ, nếu chúng ta có một đối tượng

Giá trị được trả về từ lệnh gọi phương thức Object. các mục (obj) sẽ là

đầu ra

Chúng ta có thể sử dụng đối tượng. các mục () tương tự như cách chúng tôi đã sử dụng các phương thức Object. getOwnPropertNames() và đối tượng. values() để đánh giá xem một đối tượng có trống không. Hãy xem ví dụ được đề cập dưới đây

________số 8_______

đầu ra

Phương pháp này cũng đưa ra một ngoại lệ trong trường hợp đầu vào null hoặc không xác định

Con đường trước ES5

1. Cách jQuery

jQuery là một thư viện JavaScript phổ biến và được sử dụng trong nhiều dự án trên thế giới. Do các tính năng nhẹ của nó giúp mở rộng các tính năng của các khả năng tích hợp sẵn của JavaScript. jQuery cung cấp một chức năng tích hợp để kiểm tra xem một đối tượng trong JavaScript có trống không. Bạn có thể kiểm tra xem một đối tượng có trống không bằng cách sử dụng isEmptyObject(emptyObject). Hãy xem đoạn mã sau để hiểu cách chúng ta có thể sử dụng jQuery để kiểm tra xem một đối tượng có trống không

console.log($.isEmptyObject({}));
console.log($.isEmptyObject({"foo": "bar"}));

đầu ra

2. lodash

Lodash là một thư viện JavaScript giúp làm việc với một mảng, đối tượng, số, chuỗi, v.v. dễ dàng hơn. Nó cung cấp nhiều phương thức dựng sẵn khác nhau và sử dụng phương pháp lập trình chức năng giúp làm việc với JavaScript dễ dàng hơn và ngăn việc viết các hàm lặp lại. Lodash cung cấp một phương thức tích hợp để kiểm tra xem một đối tượng có trống không. Phương thức _isEmpty(object) kiểm tra xem một đối tượng có phải là một đối tượng trống không (các đối tượng được coi là trống nếu chúng không có bất kỳ thuộc tính khóa nào có thể đếm được). Phương thức trả về true nếu đối tượng rỗng

console.log(isObjEmpty(null));
0

đầu ra

3. dấu gạch dưới

Gạch dưới là một thư viện JavaScript cung cấp các chức năng tiện ích cho các tác vụ lập trình phổ biến. Dấu gạch dưới cung cấp một chức năng tương tự như lodash để kiểm tra xem một đối tượng có trống không. Xem ví dụ sau để hiểu cách chúng ta có thể sử dụng Underscore để kiểm tra xem một đối tượng có trống không

console.log(isObjEmpty(null));
1

đầu ra

Dấu gạch dưới, trước tiên tìm hiểu độ dài của đối số đã truyền và quyết định xem đối tượng có trống không nếu nó có độ dài bằng 0

4. cuốc

Hoek là một phần của hệ sinh thái hapi và được xây dựng để hoạt động với khung web Hapi. Nếu bạn đang sử dụng thư viện hoek trong dự án của mình, bạn có thể xác định xem một đối tượng có trống không bằng cách sử dụng phương pháp sau

console.log(isObjEmpty(null));
2

Phương thức này so sánh đối tượng của chúng ta với một đối tượng trống và trả về true nếu cả hai đều bằng nhau (trống trong trường hợp của chúng ta), nếu không thì phương thức trả về false

5. ExtJS

ExtJS là một khung ứng dụng JavaScript để xây dựng các ứng dụng web đa nền tảng bằng cách sử dụng các công nghệ như Ajax và DOM scripting. Nó cung cấp tính linh hoạt để được sử dụng như một khung thành phần đơn giản và như một khung đầy đủ để xây dựng ứng dụng một trang. ExtJS cung cấp một phương thức isEmpty() để kiểm tra xem một đối tượng có rỗng hay không. Cú pháp của hàm là

Đối tượng trống có sai trong JavaScript không?

Chỉ có bảy giá trị là sai trong JavaScript và các đối tượng trống không phải là một trong số chúng . Đối tượng rỗng là đối tượng không có thuộc tính riêng. Bạn có thể sử dụng đối tượng.

Là một đối tượng trống một giả?

Một chuỗi trống hoặc giá trị không xác định là sai, nhưng một mảng hoặc đối tượng trống là đúng .

Là các đối tượng trống rỗng trung thực?

Các giá trị không có trong danh sách giá trị giả trong JavaScript được gọi là giá trị trung thực và bao gồm mảng trống [] hoặc đối tượng trống {} . Điều này có nghĩa là hầu hết mọi thứ đều được đánh giá là đúng trong JavaScript — bất kỳ đối tượng nào và hầu hết tất cả các giá trị nguyên thủy, mọi thứ trừ giá trị giả.

Là một đối tượng trống rỗng trong JavaScript?

Sử dụng đối tượng. phương thức value() . Chúng ta có thể sử dụng. Các giá trị () phương thức của các đối tượng để xác định và xác định xem một đối tượng có trống hay không. if an object has no values associated with it (including undefined and null), means the object is empty. We can use the . values() method of objects to identify and determine if an object is empty or not.