Các đối tượng trong JavaScript là các loại dữ liệu không nguyên thủy chứa một tập hợp các cặp khóa-giá trị không theo thứ tự.
Như bạn có thể thấy trong hình trên, khóa là thuộc tính và mỗi giá trị đối tượng phải có một khóa.
Khi tương tác với các đối tượng, có thể nảy sinh các tình huống yêu cầu bạn kiểm tra xem có tồn tại một khóa cụ thể hay không. Điều quan trọng cần lưu ý là nếu bạn biết một khóa tồn tại, điều đó tự động có nghĩa là một giá trị tồn tại. Giá trị này có thể là bất kỳ thứ gì – thậm chí trống, rỗng hoặc không xác định.
Trong bài viết này, chúng ta sẽ tìm hiểu các phương pháp khác nhau để kiểm tra xem khóa của đối tượng có tồn tại trong JavaScript hay không.
Trong trường hợp bạn đang vội, đây là hai phương pháp tiêu chuẩn mà chúng tôi có thể sử dụng để kiểm tra:
// Using in operator
'key' in object
// Using hasOwnProperty() method
object.hasOwnProperty('key')
Cách kiểm tra xem một đối tượng có key
trong JavaScript với in
Nhà điều hành
Bạn có thể sử dụng JavaScript in
toán tử để kiểm tra xem một thuộc tính/khóa được chỉ định có tồn tại trong một đối tượng hay không. Nó có cú pháp đơn giản và trả về true
nếu thuộc tính/khóa được chỉ định tồn tại trong đối tượng được chỉ định hoặc chuỗi nguyên mẫu của nó.
Cú pháp khi sử dụng in
toán tử là:
'key' in object
Giả sử chúng ta có một đối tượng chứa thông tin chi tiết của người dùng:
let user = {
name: "John Doe",
age: 40
};
Chúng ta có thể kiểm tra xem một khóa có tồn tại hay không với in
nhà điều hành như được thấy dưới đây:
'name' in user; // Returns true
'hobby' in user; // Returns false
'age' in user; // Returns true
Lưu ý: Giá trị trước in
từ khóa phải thuộc loại string
hoặc symbol
.
Cách kiểm tra xem một đối tượng có key
trong JavaScript với hasOwnProperty()
Phương pháp
Bạn có thể sử dụng JavaScript hasOwnProperty()
phương thức để kiểm tra xem một đối tượng được chỉ định có thuộc tính đã cho làm thuộc tính của nó hay không. t
phương pháp của anh ấy khá giống với phương pháp in
nhà điều hành. Nó mất trong một string
và sẽ trở lại true
nếu key
tồn tại trong đối tượng và false
nếu không thì.
Cú pháp khi sử dụng hasOwnProperty()
phương pháp là:
object.hasOwnProperty('key')
Giả sử chúng ta có một đối tượng chứa thông tin chi tiết của người dùng:
let user = {
name: "John Doe",
age: 40
};
Chúng ta có thể kiểm tra xem một khóa có tồn tại hay không với in
nhà điều hành như được thấy dưới đây:
user.hasOwnProperty('name'); // Returns true
user.hasOwnProperty('hobby'); // Returns false
user.hasOwnProperty('age'); // Returns true
Lưu ý: Giá trị bạn chuyển vào hasOwnProperty()
phương thức phải thuộc loại string
hoặc symbol
.
Vì bây giờ chúng ta biết rằng các phương thức này tồn tại, bây giờ chúng ta có thể sử dụng một điều kiện để kiểm tra và thực hiện bất kỳ thao tác nào chúng ta muốn thực hiện:
if ("name" in user) {
console.log("the key exists on the object");
}
// Or
if (user.hasOwnProperty("name")) {
console.log("the key exists on the object");
}
kết thúc
Trong bài viết này, chúng ta đã học cách kiểm tra xem một đối tượng có khóa hay không bằng hai phương pháp tiêu chuẩn. Sự khác biệt giữa hai phương pháp là Object.hasOwnProperty()
tìm kiếm một chìa khóa trong một đối tượng một mình trong khi in
toán tử tìm khóa trong đối tượng và chuỗi nguyên mẫu của nó.
Có nhiều phương pháp khác mà bạn có thể sử dụng, nhưng tại một số điểm, chúng có thể trở nên quá phức tạp và không dễ hiểu. Chúng cũng có thể thất bại khi thử nghiệm với một số điều kiện nhất định.
Ví dụ: chúng ta có thể sử dụng chuỗi tùy chọn, vì vậy nếu một khóa được chỉ định không tồn tại, nó sẽ trả về undefined
:
let user = {
name: "John Doe",
age: 40
};
console.log(user?.name); // Returns John Doe
console.log(user?.hobby); // Returns undefined
console.log(user?.age); // Returns 40
Vì vậy, chúng ta có thể tạo một điều kiện mà khi nó không bằng undefined
điều đó có nghĩa là khóa tồn tại:
if (user?.hobby !== undefined) {
console.log("The key exists on the object");
}
Như chúng tôi đã nói trước đó, các phương pháp này không thành công khi được thử nghiệm trong một số điều kiện không phổ biến. Ví dụ: trong trường hợp khi một khóa cụ thể được đặt thành “không xác định”, như bên dưới, điều kiện không thành công:
let user = {
name: "John Doe",
age: undefined
};
console.log(user?.age); // Returns undefined
Một ví dụ khác khi nó hoạt động nhưng phức tạp hơn là khi chúng ta sử dụng Object.keys()
phương pháp bên cạnh some()
phương pháp. Điều này hoạt động nhưng không thực sự dễ hiểu:
let user = {
name: "John Doe",
age: undefined
};
const checkIfKeyExist = (objectName, keyName) => {
let keyExist = Object.keys(objectName).some(key => key === keyName);
return keyExist;
};
console.log(checkIfKeyExist(user, 'name')); // Returns true
Trong đoạn mã trên, chúng tôi đã loại bỏ tất cả các khóa dưới dạng một mảng và sau đó áp dụng some()
phương pháp để kiểm tra xem ít nhất một phần tử trong mảng có vượt qua bài kiểm tra hay không. Nếu nó vượt qua, nó sẽ trở lại true
khác false
.
Chúc mừng mã hóa!