Logo Zephyrnet

Cách kiểm tra xem khóa có tồn tại trong đối tượng/mảng JavaScript không

Ngày:


Giới thiệu

Một đối tượng trong JavaScript là một tập hợp không có thứ tự giá trị cốt lõi cặp (key: value). Mỗi chính được biết đến như một tài sảnvà là một chuỗi đại diện cho tên thuộc tính. Nếu khóa không phải là chuỗi thì biểu diễn chuỗi đó sẽ được sử dụng. Một tài sản giá trị có thể thuộc bất kỳ loại dữ liệu nào phù hợp với thuộc tính về mặt khái niệm – một chuỗi, một số, một mảng hoặc thậm chí là một hàm.

Mặt khác, mảng là một tập hợp các giá trị được sắp xếp. Mỗi giá trị được gọi là một phần tử, được xác định bằng một chỉ số số. Một mảng có thể bao gồm các giá trị thuộc hầu hết mọi loại. Ví dụ: nó có thể lưu trữ các mục như số nguyên, chuỗi, boolean, hàm, v.v. Mảng JavaScript cũng không bị giới hạn ở một loại duy nhất, nghĩa là một mảng nhất định có thể chứa nhiều loại khác nhau bên trong nó.

Khi làm việc với JavaScript, tại một thời điểm cụ thể, bạn có thể cần xác định xem khóa có tồn tại trong một đối tượng hoặc mảng nhất định hay không.

Trong bài viết này, chúng ta sẽ thấy các phương pháp khác nhau mà chúng ta có thể sử dụng để kiểm tra xem một khóa cụ thể có tồn tại trong một đối tượng/mảng JavaScript hay không.

Sử dụng in Nhà điều hành

Sản phẩm in toán tử trong JavaScript được sử dụng để xác định xem một thuộc tính nhất định có tồn tại trong một đối tượng hay các thuộc tính kế thừa của nó (còn được gọi là chuỗi nguyên mẫu của nó). Nếu thuộc tính được cung cấp tồn tại, in toán tử trả về true.

Kiểm tra một đối tượng
let user = { name: 'John Doe', age: 17, profession: 'Farmer'
}; // Check if key exists 'name' in user; // Returns true
'profession' in user; // Returns true
'Daniel' in user; // Returns false becuase no key like that exists
'Farmer' in user; // Returns false because 'Farmer' is not a key, but a value
Kiểm tra một mảng

Vì chúng tôi đã chứng minh rằng JavaScript in toán tử có thể được sử dụng với các đối tượng, bạn có thể hỏi liệu nó có thể được sử dụng với mảng hay không. Trong JavaScript, mọi thứ đều là một thể hiện của kiểu Đối tượng (ngoại trừ kiểu nguyên thủy), vì vậy mảng cũng hỗ trợ kiểu in nhà điều hành.

Hãy xác nhận xem đó có phải là một phiên bản của Object gõ bằng cách sử dụng instanceof nhà điều hành:

let numbers = [22, 3, 74, 35]; numbers instanceof Object // Returns true

Bây giờ, hãy quay lại việc sử dụng in nhà điều hành:

let number = [12, 33, 14, 45, 6]; 33 in number; // Returns true
12 in number; // Returns true 8 in number; // Returns false because the 8 index does exist on the array 
6 in number; // Returns false because the 6 index does not exist on the array rather it exists as a value

Điều này cũng sẽ trở lại true cho các thuộc tính phương thức trên một kiểu mảng, trong đó mảng số là một thể hiện.

'map' in number; // Returns true because 'map' is a method attribute of the array type

Sử dụng hasOwnProperty() Phương pháp

Trong JavaScript, hasOwnProperty() Hàm được sử dụng để xác định xem đối tượng có thuộc tính được cung cấp làm thuộc tính riêng của nó hay không. Điều này rất quan trọng để xác định xem thuộc tính có được đối tượng kế thừa chứ không phải thuộc tính của chính nó hay không.

Kiểm tra một đối tượng
let user = { name: 'John Doe', age: 17, profession: 'Farmer'
}; // Check if key exists
let hasKey = user.hasOwnProperty('name'); if (hasKey) { console.log('This key exists.');
} else { console.log('This key does not exist.');
}
Kiểm tra một mảng

Bạn có thể bắt đầu tự hỏi liệu điều này có hiệu quả với mảng hay không. Như chúng tôi đã thiết lập trước đó, một mảng thực sự là một nguyên mẫu (ví dụ) của Object type, do đó nó cũng có sẵn phương thức này.

let number = [12, 33, 14, 45]; // Check if key exists
number.hasOwnProperty(1); // Returns true
number.hasOwnProperty(0); // Returns true
number.hasOwnProperty(7); // Returns false because 7 is not an existing index on the array

Sử dụng Object.key() Phương pháp

Phương pháp tĩnh Object.key tạo và trả về một mảng có các thành phần là chuỗi tên (khóa) thuộc tính của đối tượng. Điều này có thể được sử dụng để lặp qua các khóa của đối tượng, sau đó chúng ta có thể sử dụng khóa này để xác minh xem có khóa nào khớp với khóa nhất định trong đối tượng hay không.

Sử dụng some() Phương pháp

some() là một phương thức JavaScript kiểm tra hàm gọi lại trên tất cả các phần tử của mảng gọi và trả về true nếu hàm gọi lại trả về true cho bất kì của họ.

Sử dụng some() cho các đối tượng
let user = { name: 'John Doe', age: 17, profession: 'Farmer'
}; // Check if key exists
Object.keys(user).some(key => key === 'name'); // Returns true
Object.keys(user).some(key => key === 'role'); // Returns false

Chúng ta cũng có thể tùy chỉnh hàm này thành một hàm có thể tái sử dụng:

const checkKey = (obj, keyName) => { let keyExist = Object.keys(obj).some(key => key === keyName); console.log(keyExist);
}; checkKey(user, 'name'); // Return true
Sử dụng some() cho một mảng
let number = [12, 33, 14, 45]; // Check if key exists
number.some(value => value === 1); // Returns true
number.some(value => value === 7); // Returns false

Một lần nữa, giống như với đối tượng, chúng ta cũng có thể sử dụng hàm tái sử dụng được tùy chỉnh tương tự để kiểm tra sự tồn tại của một giá trị trong một mảng:

const checkVal = (arr, val) => { let valExist = arr.some(value => value === val); console.log(valExist);
}; checkVal(number, 7); // Returns false
checkVal(number, 0); // Returns true
Sử dụng indexOf() Phương pháp

JavaScript indexOf() phương thức sẽ trả về chỉ mục của trường hợp đầu tiên của một phần tử trong mảng. Nếu phần tử không tồn tại thì trả về -1.

Sử dụng indexOf() cho một đối tượng

Sản phẩm Object gõ vào JavaScript không thực sự hỗ trợ indexOf phương thức, vì các thuộc tính/khóa của nó vốn không có vị trí được lập chỉ mục trong đối tượng. Thay vào đó, chúng ta có thể lấy các khóa của đối tượng dưới dạng một mảng và sau đó kiểm tra sự tồn tại của khóa bằng cách sử dụng hàm indexOf phương pháp:

let user = { name: 'John Doe', age: 17, profession: 'Farmer'
}; // Check if key exists
Object.keys(user).indexOf('name') // Returns 0
Object.keys(user).indexOf('role') // Returns -1

Hãy nhớ rằng các đối tượng JavaScript không phải lúc nào cũng giữ nguyên trật tự quan trọng, do đó chỉ mục được trả về có thể không có ý nghĩa như trong mảng. Trong trường hợp này, chỉ mục chủ yếu được sử dụng để xác định sự tồn tại của khóa.

Đây là một ví dụ về việc sử dụng điều này trong một hàm tiện ích:

const checkKey = (obj, keyName) => { if (Object.keys(obj).indexOf(keyName) !== -1) { console.log('This key exists'); } else { console.log('This key does not exist'); }
}; checkKey(user, 'name'); // Logs 'This key exists'
checkKey(user, 'role'); // Logs 'This key does not exists'
Sử dụng indexOf() cho một mảng

Như chúng ta đã thấy trong ví dụ trước, mảng hỗ trợ indexOf phương thức, không giống như các đối tượng. Để sử dụng nó, hãy chuyển giá trị của mục bạn đang tìm kiếm cho indexOf, sau đó sẽ trả về vị trí của giá trị đó nếu nó tồn tại trong mảng:

let number = [12, 33, 14, 45]; // Find position of the item in the array
number.indexOf(14); // Returns 2
number.indexOf(7); // Returns -1

Kết luận

Trong bài viết này, chúng ta đã thấy tất cả các cách khả thi để kiểm tra xem khóa hoặc mục có tồn tại trong đối tượng/mảng JavaScript hay không. Chúng tôi chỉ ra cách sử dụng in nhà điều hành, hasOwnProperty() phương pháp, và some phương pháp. Chúng ta cũng đã thấy các đối tượng và mảng JS tương tự như thế nào trong đó các mảng kế thừa từ các đối tượng và do đó chứa nhiều phương thức giống nhau.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img