Hướng dẫn how do you check if a key exists in an object in javascript? - làm thế nào để bạn kiểm tra xem một khóa có tồn tại trong một đối tượng trong javascript hay không?

Câu trả lời nhanh

Làm cách nào để kiểm tra xem một khóa cụ thể có tồn tại trong một đối tượng hoặc mảng JavaScript không? Nếu một khóa không tồn tại và tôi cố gắng truy cập nó, nó sẽ trả về sai? Hoặc ném một lỗi?

Truy cập trực tiếp một thuộc tính bị thiếu bằng cách sử dụng kiểu mảng hoặc kiểu đối tượng sẽ trả về một hằng số không xác định.

Chậm và đáng tin cậy trong toán tử và phương pháp HasownProperty

Như mọi người đã đề cập ở đây, bạn có thể có một đối tượng với một tài sản được liên kết với hằng số "không xác định".

 var bizzareObj = {valid_key:  undefined};

Trong trường hợp đó, bạn sẽ phải sử dụng HasownProperty hoặc trong nhà điều hành để biết chìa khóa có thực sự ở đó không. Nhưng, nhưng với giá nào?

Vì vậy, tôi nói với bạn ...

Trong toán tử và HasownProperty là "phương pháp" sử dụng cơ chế mô tả thuộc tính trong JavaScript (tương tự như phản xạ Java trong ngôn ngữ Java).

http://www.ecma-international.org/ecma-262/5.1/#sec-8.10

Loại mô tả thuộc tính được sử dụng để giải thích thao tác và thống nhất các thuộc tính thuộc tính được đặt tên. Các giá trị của loại mô tả thuộc tính là các bản ghi bao gồm các trường được đặt tên trong đó mỗi tên trường tên là một tên thuộc tính và giá trị của nó là giá trị thuộc tính tương ứng như được chỉ định trong 8.6.1. Ngoài ra, bất kỳ lĩnh vực có thể có mặt hoặc vắng mặt.

Mặt khác, gọi một phương thức đối tượng hoặc khóa sẽ sử dụng cơ chế JavaScript [[get]]. Đó là một cách xa hơn nhanh hơn!

Điểm chuẩn

https://jsben.ch/HaHQt

Hướng dẫn how do you check if a key exists in an object in javascript? - làm thế nào để bạn kiểm tra xem một khóa có tồn tại trong một đối tượng trong javascript hay không?
.

Sử dụng trong toán tử

var result = "Impression" in array;

Kết quả là

12,931,832 ±0.21% ops/sec      92% slower 

Sử dụng Hasownproperty

var result = array.hasOwnProperty("Impression")

Kết quả là

Sử dụng Hasownproperty

16,021,758 ±0.45% ops/sec     91% slower

var result = array["Impression"] === undefined

Kết quả là

168,270,439 ±0.13 ops/sec     0.02% slower 

Sử dụng Hasownproperty

var result = array.Impression  === undefined;

Kết quả là

168,303,172 ±0.20%     fastest

Sử dụng Hasownproperty

16,021,758 ±0.45% ops/sec     91% slower

Truy cập các yếu tố trực tiếp (phong cách dấu ngoặc)confirmed lack of value. On the other hand,

12,931,832 ±0.21% ops/sec      92% slower 
2 is an unknown value (not defined). If there is a property that will be used later with a proper value consider use
12,931,832 ±0.21% ops/sec      92% slower 
3 reference instead of
12,931,832 ±0.21% ops/sec      92% slower 
2 because in the initial moment the property is confirmed to lack value.

Compare:

var a = {1: null}; 
console.log(a[1] === undefined); // output: false. I know the value at position 1 of a[] is absent and this was by design, i.e.:  the value is defined. 
console.log(a[0] === undefined); // output: true. I cannot say anything about a[0] value. In this case, the key 0 was not in a[].

Truy cập các yếu tố trực tiếp (kiểu đối tượng)

Chỉnh sửa: Lý do gán cho thuộc tính giá trị

12,931,832 ±0.21% ops/sec      92% slower 
2 là gì?

Câu hỏi đó đặt câu hỏi cho tôi. Trong JavaScript, có ít nhất hai tài liệu tham khảo cho các đối tượng vắng mặt để tránh các vấn đề như thế này: 12,931,832 ±0.21% ops/sec 92% slower 3 và 12,931,832 ±0.21% ops/sec 92% slower 2.

12,931,832 ±0.21% ops/sec      92% slower 
3 là giá trị nguyên thủy đại diện cho sự vắng mặt có chủ ý của bất kỳ giá trị đối tượng nào, hoặc trong thời gian ngắn, sự thiếu giá trị được xác nhận. Mặt khác,
12,931,832 ±0.21% ops/sec      92% slower 
2 là một giá trị không xác định (không được xác định). Nếu có một thuộc tính sẽ được sử dụng sau này với giá trị thích hợp, hãy xem xét việc sử dụng tham chiếu ____23 thay vì
12,931,832 ±0.21% ops/sec      92% slower 
2 vì trong thời điểm ban đầu, tài sản được xác nhận là thiếu giá trị.

Hướng dẫn how do you check if a key exists in an object in javascript? - làm thế nào để bạn kiểm tra xem một khóa có tồn tại trong một đối tượng trong javascript hay không?

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 bộ sưu tập các cặp giá trị khóa không có thứ tự.

Hướng dẫn how do you check if a key exists in an object in javascript? - làm thế nào để bạn kiểm tra xem một khóa có tồn tại trong một đối tượng trong javascript hay không?

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ó khóa.

Khi tương tác với các đối tượng, các tình huống có thể phát sinh yêu cầu bạn kiểm tra xem một khóa cụ thể có tồn tại 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 tự động có nghĩa là một giá trị tồn tại. Giá trị này có thể là bất cứ điều gì - thậm chí trống rỗng, null hoặc không xác định.

Trong bài viết này, chúng tôi sẽ tìm hiểu các phương pháp khác nhau để kiểm tra xem khóa của một đố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 chúng ta có thể sử dụng để kiểm tra:

var result = "Impression" in array;
0

Bạn có thể sử dụng toán tử JavaScript

var result = array.hasOwnProperty("Impression")
1 để kiểm tra xem thuộc tính/khóa được chỉ định có tồn tại trong một đối tượng không. Nó có cú pháp đơn giản và trả về
var result = array.hasOwnProperty("Impression")
4 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 toán tử

var result = array.hasOwnProperty("Impression")
1 là:

var result = "Impression" in array;
1

Giả sử chúng ta có một đối tượng chứa chi tiết của người dùng:

var result = "Impression" in array;
2

Chúng ta có thể kiểm tra xem một khóa có tồn tại với toán tử

var result = array.hasOwnProperty("Impression")
1 như được thấy dưới đây không:

var result = "Impression" in array;
3

Lưu ý: Giá trị trước từ khóa

var result = array.hasOwnProperty("Impression")
1 phải thuộc loại
var result = array.hasOwnProperty("Impression")
8 hoặc
var result = array.hasOwnProperty("Impression")
9.

Cách kiểm tra xem một đối tượng có 16,021,758 ±0.45% ops/sec 91% slower 0 trong JavaScript với phương pháp var result = array.hasOwnProperty("Impression") 2 không

Bạn có thể sử dụng phương thức JavaScript

var result = array.hasOwnProperty("Impression")
2 để 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ó không. T

Phương pháp của anh ấy khá giống với toán tử

var result = array.hasOwnProperty("Impression")
1. Phải mất một
var result = array.hasOwnProperty("Impression")
8 và sẽ trả lại
var result = array.hasOwnProperty("Impression")
4 nếu
16,021,758 ±0.45% ops/sec     91% slower
0 tồn tại trong đối tượng và
16,021,758 ±0.45% ops/sec     91% slower
7 nếu không.

Cú pháp khi sử dụng phương thức

var result = array.hasOwnProperty("Impression")
2 là:

var result = "Impression" in array;
4

Giả sử chúng ta có một đối tượng chứa chi tiết của người dùng:

var result = "Impression" in array;
2

Chúng ta có thể kiểm tra xem một khóa có tồn tại với toán tử

var result = array.hasOwnProperty("Impression")
1 như được thấy dưới đây không:

var result = "Impression" in array;
6

Lưu ý: Giá trị trước từ khóa

var result = array.hasOwnProperty("Impression")
1 phải thuộc loại
var result = array.hasOwnProperty("Impression")
8 hoặc
var result = array.hasOwnProperty("Impression")
9.

Cách kiểm tra xem một đối tượng có

16,021,758 ±0.45% ops/sec     91% slower
0 trong JavaScript với phương pháp
var result = array.hasOwnProperty("Impression")
2 không

var result = "Impression" in array;
7

Bạn có thể sử dụng phương thức JavaScript var result = array.hasOwnProperty("Impression") 2 để 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ó không. T

Phương pháp của anh ấy khá giống với toán tử

var result = array.hasOwnProperty("Impression")
1. Phải mất một
var result = array.hasOwnProperty("Impression")
8 và sẽ trả lại
var result = array.hasOwnProperty("Impression")
4 nếu
16,021,758 ±0.45% ops/sec     91% slower
0 tồn tại trong đối tượng và
16,021,758 ±0.45% ops/sec     91% slower
7 nếu không.

Cú pháp khi sử dụng phương thức

var result = array.hasOwnProperty("Impression")
2 là:

Lưu ý: Giá trị bạn chuyển vào phương thức

var result = array.hasOwnProperty("Impression")
2 phải thuộc loại
var result = array.hasOwnProperty("Impression")
8 hoặc
var result = array.hasOwnProperty("Impression")
9.

var result = "Impression" in array;
8

Vì bây giờ chúng ta biết rằng các phương pháp này tồn tại, giờ đây 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ỳ hoạt động nào chúng ta muốn thực hiện:

var result = "Impression" in array;
9

Gói lên

12,931,832 ±0.21% ops/sec      92% slower 
0

Trong bài viết này, chúng tôi đã học được cách kiểm tra xem một đối tượng có khóa bằng hai phương pháp tiêu chuẩn không. Sự khác biệt giữa hai phương thức là

var result = array["Impression"] === undefined
3 tìm kiếm một khóa trong một đối tượng trong khi toán tử
var result = array.hasOwnProperty("Impression")
1 tìm khóa trong đối tượng và chuỗi nguyên mẫu của nó.

12,931,832 ±0.21% ops/sec      92% slower 
1

Có những phương pháp khác bạn có thể sử dụng, nhưng đến một lúc nào đó chúng có thể trở nên quá phức tạp và không dễ hiểu. Họ cũng có thể thất bại khi được thử nghiệm chống lạ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ề

12,931,832 ±0.21% ops/sec      92% slower 
2:



Vì vậy, chúng tôi có thể tạo ra một điều kiện mà khi nó không bằng

12,931,832 ±0.21% ops/sec      92% slower 
2, điều đó có nghĩa là chính tồn tại: