Chuyển đổi chuỗi địa phương thành số JavaScript

Như bạn có thể đã biết, có nhiều cách để chuyển đổi một chuỗi thành một số nguyên trong JavaScript. Tuy nhiên, vẫn còn tranh luận về phương pháp nào là phương pháp “tốt nhất” dành cho các nhà phát triển. Hãy xem xét một số tùy chọn

parseInt[ ]

parseInt[string, radix]

Chúng tôi bắt đầu với

console.log[parseInt[“24haha25”]] // 24
4 có hai đối số, một chuỗi và một cơ số. Hàm trả về một số nguyên được phân tích cú pháp từ chuỗi đã cho

Nếu đối số đầu tiên không phải là một chuỗi, nó sẽ tự động được chuyển đổi thành một chuỗi bằng cách sử dụng

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
0. Dù bằng cách nào, mọi khoảng trắng ở đầu đều bị bỏ qua

Phương thức

console.log[parseInt[“24haha25”]] // 24
4 bắt đầu ở vị trí 0 và xác định xem ký tự được tìm thấy ở đó có thể được chuyển đổi thành một số hợp lệ hay không. Nếu không, phương thức trả về
const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
2 và dừng. Đây là một ví dụ

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN

Đầu ra sẽ là

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
2, mặc dù chuỗi chứa một số

Nếu ký tự ở vị trí 0 hợp lệ, phương thức sẽ tiếp tục và thực hiện kiểm tra tương tự. Điều này tiếp tục cho đến khi

console.log[parseInt[“24haha25”]] // 24
4 gặp một số không hợp lệ, tại thời điểm đó, nó sẽ chuyển đổi chuỗi hiện tại thành một số

console.log[parseInt[“24haha25”]] // 24

Điều này sẽ trả về

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
5 vì nó sẽ dừng phân tích cú pháp tại
const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
6, tức là
const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
2

MDN gợi ý rằng khi sử dụng

console.log[parseInt[“24haha25”]] // 24
4, bạn nên “Luôn chỉ định một
const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
9 để tránh… hành vi không đáng tin cậy. ”

Điều này là do trước ECMAScript 5,

console.log[parseInt[“24haha25”]] // 24
4 đã sử dụng cơ số bát phân [8] làm mặc định nếu một chuỗi bắt đầu bằng “0”. Kể từ ECMAScript 5, mặc định là cơ số thập phân [10]

“Nếu cơ số là

console.log[parseInt[“24haha25”]] // 24
1 hoặc
console.log[parseInt[“24haha25”]] // 24
2, thì nó được giả định là
console.log[parseInt[“24haha25”]] // 24
3 trừ khi số bắt đầu bằng cặp ký tự
console.log[parseInt[“24haha25”]] // 24
4 hoặc
console.log[parseInt[“24haha25”]] // 24
5, trong trường hợp đó cơ số của
console.log[parseInt[“24haha25”]] // 24
6 được giả định. ” — Tài liệu MDN

parseFloat[ ]

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
6

console.log[parseInt[“24haha25”]] // 24
7 khá giống với
console.log[parseInt[“24haha25”]] // 24
4, với hai điểm khác biệt chính

Đầu tiên, không giống như

console.log[parseInt[“24haha25”]] // 24
4,
console.log[parseInt[“24haha25”]] // 24
7 không lấy cơ số làm đối số. Điều này có nghĩa là chuỗi phải biểu thị số dấu phẩy động ở dạng thập phân [cơ số 10], không phải bát phân [cơ số 8] hoặc thập lục phân [cơ số 6]

Thứ hai, khi sử dụng

console.log[parseInt[“24haha25”]] // 24
7, dấu thập phân là một ký tự hợp lệ, nhưng chỉ lần đầu tiên nó xuất hiện. Nếu đạt đến dấu thập phân thứ hai, phương thức sẽ dừng phân tích cú pháp tại vị trí đó

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
0

Mặt khác, các hành vi khác của

console.log[parseInt[“24haha25”]] // 24
4 cũng được tìm thấy ở đây

  • Chỉ số đầu tiên trong chuỗi được trả về
  • Khoảng trắng đầu và cuối được cho phép và bỏ qua
  • Nếu ký tự đầu tiên không phải là một số hợp lệ, thì trả về
    const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
    2

Số[ ]

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
2

Các chức năng phân tích cú pháp và

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
64 phần lớn có thể hoán đổi cho nhau.
const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
64 có thể xử lý một số thập phân, nhưng cũng sẽ bị bỏ qua nhiều hơn một dấu thập phân. Khoảng trắng đầu và cuối vẫn được chấp nhận và bỏ qua

Có một vài sự khác biệt. Các phương thức phân tích cú pháp, như tên gợi ý, cố gắng phân tích cú pháp từng phần một của chuỗi khi chúng chuyển đổi nó,

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
64 cố gắng chuyển đổi toàn bộ đối số chuỗi thành một số, tất cả cùng một lúc

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
6

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
64 là hàm tạo của JavaScript
const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
68 được gọi là hàm, thực hiện chuyển đổi kiểu. Nó cố gắng chuyển đổi bất kỳ giá trị nào thành một số

  • const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
    69 trở thành
    console.log[parseInt[“24haha25”]] // 24
    2,
    const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
    01 trở thành
    const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
    02
  • const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
    03 trở thành
    console.log[parseInt[“24haha25”]] // 24
    2,
    console.log[parseInt[“24haha25”]] // 24
    1 trở thành
    const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
    2
  • Chuỗi rỗng
    const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
    07 trở thành
    console.log[parseInt[“24haha25”]] // 24
    2, chuỗi không phải số trở thành
    const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
    2
  • const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
    20 cho
    console.log[parseInt[“24haha25”]] // 24
    2;

Đây là tổng quan về

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
64 từ W3Schools

Toán tử đơn nguyên +

Bạn có thể biết hoặc không biết về khả năng chuyển đổi chuỗi thành số trong JavaScript của toán tử một ngôi

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
25. Ví dụ

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
6

Theo như tôi biết, việc sử dụng toán tử đơn nguyên

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
25 theo cách này bắt chước chính xác hành vi của
const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
64 mà không có bất kỳ ngoại lệ nào. Vì vậy, tại sao lại sử dụng
const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
64?

Một số người xem toán tử

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
25 như một dạng đường cú pháp vì nó có thể được sử dụng để viết tắt các hàm phân tích cú pháp hoặc hàm
const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
64

Tuy nhiên, ít mã hơn không phải lúc nào cũng bằng mã ngắn gọn hơn. Sự rõ ràng nên được xem xét khi đưa ra quyết định về các phím tắt như vậy

Không phải ai cũng có thể nhận thức được hành vi này, điều này có thể dẫn đến sự nhầm lẫn cho người đọc mã của bạn, trong khi

console.log[parseInt[“24haha25”]] // 24
4 rõ ràng và ngắn gọn

Theo tôi, nói chung, bạn nên sử dụng mã mô tả những gì nó làm thay vì mã sử dụng tác dụng phụ của việc không hoạt động

Nhân với 1

Một cách tắt khác, nếu bạn biết chuỗi mà bạn đang muốn chuyển đổi là một số, bạn có thể nhân nó với một để chuyển đổi nó

console.log[parseInt[“24haha25”]] // 24
2

Xin nhắc lại, phương pháp này hoạt động giống như phương pháp

const str = “What’s funnier than 24?”,console.log[parseInt[str]] // NaN
64 và tôi đã thấy nó được quảng cáo là phương pháp chuyển đổi nhanh nhất. Tuy nhiên, những lo ngại trước đây của tôi về tính hữu ích của đường cú pháp như vậy cũng được áp dụng ở đây

Biểu thức chính quy

Một tùy chọn cho phép tùy chỉnh đang triển khai biểu thức chính quy trong một chức năng do chính bạn xây dựng. Đây là một ví dụ từ MDN

Vì vậy, phương pháp nào là tốt nhất?

Tôi hỏi điều này một cách chân thành, độc giả thân mến. Bây giờ chúng ta đã đề cập đến một số tùy chọn [nhưng không phải tất cả] ở đây, tôi rất muốn nghe ý kiến ​​của bạn về phương pháp [hoặc các phương pháp] mà bạn cho là tốt nhất [và tại sao]

Tôi chắc rằng nhiều người trong số các bạn hiểu biết nhiều hơn tôi về thời gian thực hiện, mặc dù hiệu suất cho các toán tử và chức năng thay đổi cùng với việc tối ưu hóa công cụ JavaScript trong trình duyệt

Tôi hy vọng sẽ đọc được một số cuộc tranh luận hữu ích và lành mạnh, và nếu không có gì khác, tôi hy vọng đây là một bài đánh giá tốt và thậm chí có thể bạn đã học được điều gì đó mới

toLocaleString[] trong JavaScript là gì?

Phương thức toLocaleString[] trả về một chuỗi có biểu diễn ngày này theo ngôn ngữ . Trong triển khai với Intl. Hỗ trợ API DateTimeFormat, phương pháp này chỉ cần gọi Intl. Định dạng ngày giờ.

Làm thế nào bạn sẽ chuyển đổi một chuỗi thành một int?

Sử dụng số nguyên. parseInt[] để chuyển đổi chuỗi thành số nguyên . Nếu chuỗi không chứa số nguyên hợp lệ thì nó sẽ ném NumberFormatException.

toLocaleString trong góc là gì?

TypeScript. Hàm toLocaleString[] . Phương thức toLocaleString[] trong TypeScript trả về một chuỗi con người có thể đọc được đại diện cho số bằng ngôn ngữ của môi trường .

Chủ Đề