Cách kiểm tra giá trị enum trong javascript

Enum rất hữu ích khi chúng ta muốn sử dụng các giá trị được xác định trước. Đôi khi chúng tôi muốn lấy một khóa nhất định được liên kết với một giá trị và ngược lại. Javascript/TypeScript không cung cấp một cách đơn giản vào lúc này. Vì vậy, chúng ta cần một thủ thuật đơn giản cho nó. Trong bài đăng này, tôi sẽ trình bày cách sử dụng cơ bản của enum và cách lấy khóa/giá trị

Liên kết được Tài trợ

Mục lục

sử dụng cơ bản

Chúng ta có thể định nghĩa enum có và không có giá trị. Các số liên tiếp được chỉ định khi nó được xác định không có giá trị

enum WithoutValues {
    First,
    Second,
    Third,
}
console.log[WithoutValues.First];
console.log[WithoutValues.Second];
console.log[WithoutValues.Third];
// 0
// 1
// 2

Khi xác định một giá trị

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7

Cũng có thể gán một giá trị được đặt ở giữa. Một số liên tiếp được gán lại sau thuộc tính được xác định giá trị

enum WithValues2 {
    First,
    Second = 5,
    Third,
}
console.log[WithValues2.First];
console.log[WithValues2.Second];
console.log[WithValues2.Third];
// 0
// 5
// 6

Chúng ta có thể gán giá trị cho tất cả các thuộc tính và gán cả chuỗi

enum LogLevel {
    Trace = -20,
    Debug = -10,
    Info = 0,
    Warn = 10,
    Error = 20,
    Off = 99,
}

enum LogLevelString {
    Trace = "Trace-Level",
    Debug = "Debug-Level",
    Info = "Info-Level",
    Warn = "Warn-Level",
    Error = "Error-Level",
    Off = "Off-Level",
}
console.log[LogLevel.Error];
console.log[LogLevelString.Error];
// 20
// Error-Level

Liên kết được Tài trợ

Cách lấy danh sách khóa

Bạn có thể nghĩ rằng thật dễ dàng để lấy danh sách khóa bằng cách sử dụng hàm

enum WithValues2 {
    First,
    Second = 5,
    Third,
}
console.log[WithValues2.First];
console.log[WithValues2.Second];
console.log[WithValues2.Third];
// 0
// 5
// 6
3. Hãy kiểm tra kết quả

console.log[Object.keys[LogLevel]];
// [
//   '0',     '10',    '20',
//   '99',    'Trace', '-20',
//   'Debug', '-10',   'Info',
//   'Warn',  'Error', 'Off'
// ]
console.log[Object.keys[LogLevelString]];
// [ 'Trace', 'Debug', 'Info', 'Warn', 'Error', 'Off' ]

Ối. Kết quả của nó không giống như những gì chúng ta mong đợi khi số được gán trong khi chuỗi enum trông như những gì chúng ta mong đợi. Chúng ta cần lọc nó bằng cách nào đó để chỉ lấy các khóa. Nếu enum chỉ chứa số, đoạn mã sau hoạt động để lấy khóa

enum LogLevel {
    Trace = -20,
    Debug = -10,
    Info = 0,
    Warn = 10,
    Error = 20,
    Off = 99,
}
const keys = Object.keys[LogLevel].filter[[x] => Number.isNaN[Number[x]]];
console.log[keys];  // keys
// [ 'Trace', 'Debug', 'Info', 'Warn', 'Error', 'Off' ]

Cách lấy danh sách giá trị

Khi chúng tôi muốn lấy danh sách giá trị, chúng tôi có thể viết như thế này bên dưới vì Khóa luôn là chuỗi

enum LogLevel {
    Trace = -20,
    Debug = -10,
    Info = 0,
    Warn = 10,
    Error = 20,
    Off = 99,
}
const values = Object.keys[LogLevel].filter[[x] => !Number.isNaN[Number[x]]];
console.log[values];
// [ '0', '10', '20', '99', '-20', '-10' ]

Nếu enum chỉ chứa chuỗi thì dễ

________số 8

Cách kiểm tra xem giá trị có trong enum không

Đôi khi chúng ta cần kiểm tra xem giá trị có trong enum không. Thật dễ dàng để làm điều đó nếu giá trị là số. Hãy xem một ví dụ

enum LogLevel {
    Info = 0,
    Warn = 10,
    Error = 20,
}
console.log[10 in LogLevel];
// true
console.log[11 in LogLevel];
// false

Chỉ định biến mục tiêu của bạn ở bên trái và sử dụng từ khóa

enum WithValues2 {
    First,
    Second = 5,
    Third,
}
console.log[WithValues2.First];
console.log[WithValues2.Second];
console.log[WithValues2.Third];
// 0
// 5
// 6
4 nhưng nó không hoạt động đối với chuỗi enum

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7
1

Nếu giá trị được chỉ định là số thì nó hoạt động mặc dù enum chứa cả số và chuỗi. Tuy nhiên, chúng ta cần một cách khác cho chuỗi. Hãy sử dụng chức năng

enum WithValues2 {
    First,
    Second = 5,
    Third,
}
console.log[WithValues2.First];
console.log[WithValues2.Second];
console.log[WithValues2.Third];
// 0
// 5
// 6
5 được hiển thị ở trên

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7
0

Cách lấy tên khóa theo giá trị

Thật đơn giản nếu nó là số enum

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7
1

Nếu đó là chuỗi enum, chúng ta cần một thủ thuật vì trình biên dịch hiển thị lỗi sau

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7
2

Một cách khác là làm theo

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7
3

Cách lấy giá trị theo tên khóa

Chúng ta có thể lấy trực tiếp giá trị đích nếu chuỗi được chỉ định là một trong các khóa của enum. Tuy nhiên, trình biên dịch hiển thị thông báo lỗi khi xác định hàm cho nó vì nó không chấp nhận giá trị chuỗi trong

enum WithValues2 {
    First,
    Second = 5,
    Third,
}
console.log[WithValues2.First];
console.log[WithValues2.Second];
console.log[WithValues2.Third];
// 0
// 5
// 6
6

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7
4

Mã sau có thể giải quyết vấn đề

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7
5

Cách xử lý khi enum chứa cả số và chuỗi

Cả khóa và giá trị chỉ được chứa khi giá trị là số. Điều đó có nghĩa là chúng tôi có thể nhận được các khóa và giá trị mong muốn khi chúng tôi loại trừ nó

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7
6

Nó hoạt động

Sử dụng Enum làm khóa đối tượng

Một số người có thể muốn sử dụng enum làm khóa đối tượng. Làm thế nào chúng ta có thể xác định nó trong trường hợp này?

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7
7

Nó có thể được thay thế bằng định nghĩa sau

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7
8

Nếu có một thuộc tính không được bao gồm trong MixEnum, lỗi sẽ hiển thị

enum WithValues1 {
    First = 5,
    Second,
    Third,
}
console.log[WithValues1.First];
console.log[WithValues1.Second];
console.log[WithValues1.Third];
// 5
// 6
// 7
9

Tương tự như vậy, một lỗi sẽ được hiển thị nếu một trong các thuộc tính bị thiếu

enum WithValues2 {
    First,
    Second = 5,
    Third,
}
console.log[WithValues2.First];
console.log[WithValues2.Second];
console.log[WithValues2.Third];
// 0
// 5
// 6
0

Nếu tất cả các thuộc tính không cần thiết, hãy thêm dấu chấm hỏi

enum WithValues2 {
    First,
    Second = 5,
    Third,
}
console.log[WithValues2.First];
console.log[WithValues2.Second];
console.log[WithValues2.Third];
// 0
// 5
// 6
1

Có thể sử dụng hàm chung cho enum không?

Tôi nghĩ sẽ hữu ích nếu tôi có thể tạo một hàm để kiểm tra xem giá trị đã chỉ định có trong enum hay để lấy khóa/giá trị. Tuy nhiên, hiện tại không thể sử dụng thuốc generic cho enum. Những gì tôi muốn làm là một cái gì đó như thế này dưới đây

enum WithValues2 {
    First,
    Second = 5,
    Third,
}
console.log[WithValues2.First];
console.log[WithValues2.Second];
console.log[WithValues2.Third];
// 0
// 5
// 6
2

Tuy nhiên, điều đó là không thể vì

enum WithValues2 {
    First,
    Second = 5,
    Third,
}
console.log[WithValues2.First];
console.log[WithValues2.Second];
console.log[WithValues2.Third];
// 0
// 5
// 6
8 chỉ là một loại. Hàm
enum WithValues2 {
    First,
    Second = 5,
    Third,
}
console.log[WithValues2.First];
console.log[WithValues2.Second];
console.log[WithValues2.Third];
// 0
// 5
// 6
9 yêu cầu một đối tượng thay thế

Chấm dứt

Bạn đã tìm thấy giải pháp của bạn trong bài viết này?

Làm cách nào để kiểm tra xem giá trị có trong enum JavaScript không?

Để kiểm tra xem một giá trị có tồn tại trong một enum không. .
Sử dụng đối tượng. values[] để lấy một mảng các giá trị của enum
Sử dụng phương thức include[] để kiểm tra xem giá trị có tồn tại trong mảng không
Phương thức bao gồm sẽ trả về true nếu giá trị được chứa trong enum và sai nếu không

Làm cách nào để sử dụng giá trị enum trong JavaScript?

Có nhiều cách khác nhau để chúng ta có thể thiết kế enum trong mã javascript của mình. Các enum cơ bản có thể được tạo bởi các đối tượng sử dụng số nguyên hoặc giá trị kiểu chuỗi nhưng phương pháp này không phù hợp với nhiều trường hợp như vậy, ví dụ: hai enum với .

Chúng ta có thể sử dụng @value trong enum không?

Không, không phải . Mục đích của Enum là cung cấp cho chúng tôi dữ liệu được ánh xạ [bộ giá trị cố định] với phạm vi giới hạn. Nếu chúng ta sử dụng @Value trong Java enums, nó sẽ lấy đi mục đích của enum ngay từ đầu.

Giá trị của một enum là gì?

Trong C#, một enum [hoặc kiểu liệt kê] được sử dụng để gán tên hằng cho một nhóm giá trị số nguyên . Nó làm cho các giá trị không đổi dễ đọc hơn, ví dụ: WeekDays. Thứ hai dễ đọc hơn số 0 khi đề cập đến ngày trong tuần.

Chủ Đề