Khi làm việc với bất kỳ ngôn ngữ lập trình nào, có thể bạn sẽ cần một số chức năng vốn không được tích hợp vào ngôn ngữ đó. Do đó, bạn sẽ tự triển khai chúng hoặc chuyển sang sử dụng các mô-đun hoặc thư viện khác nhau
Điều này ảnh hưởng trực tiếp đến hiệu quả của ứng dụng của bạn [sử dụng nhiều bộ nhớ hơn, nhiều yêu cầu HTTP hơn, v.v. ]. Để tránh điều này, các nhà phát triển làm việc trên các ngôn ngữ lập trình nâng cao đã tích hợp các chức năng trong các ngôn ngữ đó để giúp tránh phải sử dụng các thư viện bên ngoài cho các tác vụ thông thường
Làm quen với các hàm có sẵn này được coi là kiến thức cơ bản về ngôn ngữ và bạn vẫn có thể tiến xa chỉ với các hàm có sẵn. Tất nhiên, rất có thể bạn sẽ sử dụng một số mô-đun/thư viện cho một số tác vụ nhất định
Trong hướng dẫn dành cho người mới bắt đầu này, chúng ta sẽ xem xét các chức năng tích hợp sẵn của JavaScript liên quan đến Chuỗi
Các kiểu dữ liệu, cấu trúc và đối tượng của JavaScript với các chức năng tích hợp
Trong JavaScript, có tám loại dữ liệu
- Sợi dây
- Con số
- Boolean
- Vô giá trị
- Chưa xác định
- Biểu tượng
- BigInt
- Sự vật
Tuy nhiên, không phải kiểu dữ liệu nào cũng có sẵn chức năng. Chúng chỉ được xác định trên. Chuỗi, Số và Boolean
Khi nói đến Cấu trúc dữ liệu trong JavaScript, bảy cấu trúc được sử dụng nhiều nhất là
- Mảng
- Cây rơm
- Xếp hàng
- Danh sách liên kết
- Cây
- đồ thị
- Hashtable
Tương tự như kiểu dữ liệu, trong Cấu trúc dữ liệu, các hàm dựng sẵn chỉ được định nghĩa trên Mảng. Cuối cùng, các Đối tượng trong JavaScript cũng có các hàm tích hợp, chẳng hạn như Ngày, RegExp và Toán học
Trong hướng dẫn này, chúng tôi sẽ tập trung cụ thể vào các chuỗi
Các hàm chuỗi tích hợp trong JavaScript
Một chuỗi, như đã đề cập trước đó, là một trong tám loại dữ liệu trong JavaScript. Về bản chất, nó là một mảng [chuỗi] ký tự
Ngoài ra, cần lưu ý rằng các chuỗi là bất biến - một khi đối tượng chuỗi được tạo, nó không thể thay đổi được. Mọi hàm thay đổi chuỗi sẽ tạo một đối tượng chuỗi mới và trả về nó, thay vì sửa đổi đối tượng ban đầu
Với thực tế là các chuỗi chỉ là mảng - bạn có thể coi chúng là mảng và truy xuất các phần tử thông qua ký hiệu
console.time['Concatenating with Operator'];
concatWithOperator[];
console.timeEnd['Concatenating with Operator'];
console.time['Concatenating with Function'];
concatWithFunction[];
console.timeEnd['Concatenating with Function'];
function concatWithOperator[] {
let result = "";
for [let i = 0; i < 10000; i++] {
result = result += i;
}
}
function concatWithFunction[] {
let result = "";
for [let i = 0; i < 10000; i++] {
result = result.concat[i];
}
}
6Như đã nói, hãy bắt đầu với các hàm tích hợp liên quan đến chuỗi
toString[]
console.time['Concatenating with Operator'];
concatWithOperator[];
console.timeEnd['Concatenating with Operator'];
console.time['Concatenating with Function'];
concatWithFunction[];
console.timeEnd['Concatenating with Function'];
function concatWithOperator[] {
let result = "";
for [let i = 0; i < 10000; i++] {
result = result += i;
}
}
function concatWithFunction[] {
let result = "";
for [let i = 0; i < 10000; i++] {
result = result.concat[i];
}
}
7 là một trong những hàm được sử dụng phổ biến nhất liên quan đến chuỗi. Nó thuộc về tất cả các Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
0 và trả về một biểu diễn chuỗi của đối tượng, chuyển đổi một cách hiệu quả một đối tượng thuộc bất kỳ loại nào thành biểu diễn chuỗi của nóconsole.time['Concatenating with Operator'];
concatWithOperator[];
console.timeEnd['Concatenating with Operator'];
console.time['Concatenating with Function'];
concatWithFunction[];
console.timeEnd['Concatenating with Function'];
function concatWithOperator[] {
let result = "";
for [let i = 0; i < 10000; i++] {
result = result += i;
}
}
function concatWithFunction[] {
let result = "";
for [let i = 0; i < 10000; i++] {
result = result.concat[i];
}
}
7 sẽ hành xử khác nhau với từng đối tượng, tùy thuộc vào việc triển khai chức năng của nó - ý nghĩa của việc biểu diễn đối tượng đó dưới dạng chuỗi. Ngoài ra, hãy lưu ý rằng nếu bạn thay đổi bất kỳ phần tử nào trong một phép toán số học thành một chuỗi - JavaScript sẽ suy ra điều này như một nỗ lực ghép nốiỞ đây,
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
2 thuộc loại Số vì chúng tôi đang thêm vào các biến loại Số cùng nhau và Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
3 thuộc loại Chuỗi vì biến đầu tiên thuộc loại Chuỗi và Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
4 đang được chuyển đổi nội bộ thành Chuỗi và được thêm vào Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
5. Nếu bạn muốn chuyển đổi một kết quả số học thành một chuỗi - hãy đảm bảo thực hiện chuyển đổi cuối cùngConcatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
6 thêm hai chuỗi lại với nhau và trả về một chuỗi mớiVề cơ bản nó thực hiện các hoạt động tương tự như
Thực sự nên sử dụng hàm
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
6 thay vì toán hạng, do các lợi ích về hiệu suất. Tuy nhiên, bạn sẽ không thu được nhiều từ việc nối một chuỗi - bạn sẽ đạt được hiệu suất cho số lượng lớn chuỗi. Hãy điểm chuẩn nó thật nhanhconsole.time['Concatenating with Operator'];
concatWithOperator[];
console.timeEnd['Concatenating with Operator'];
console.time['Concatenating with Function'];
concatWithFunction[];
console.timeEnd['Concatenating with Function'];
function concatWithOperator[] {
let result = "";
for [let i = 0; i < 10000; i++] {
result = result += i;
}
}
function concatWithFunction[] {
let result = "";
for [let i = 0; i < 10000; i++] {
result = result.concat[i];
}
}
Kết quả này trong
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
Chức năng này nhanh hơn khoảng hai lần trên mã này. Cũng đáng lưu ý tuyên bố chính thức từ MDN, liên quan đến lợi ích hiệu suất
Chúng tôi khuyên bạn nên sử dụng các toán tử gán [+, +=] thay cho phương thức concat[]
Điều này có vẻ kỳ lạ, vì thực tế là
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
6 vượt trội so với các toán tử trong các thử nghiệm. Đưa cái gì? Trình duyệt của bạn, phiên bản của nó cũng như trình tối ưu hóa mà nó sử dụng có thể khác nhau giữa các máy và các thuộc tính như những thuộc tính đó thực sự ảnh hưởng đến hiệu suất. Chẳng hạn, chúng tôi đã sử dụng các chuỗi khác nhau trong phép nối, những chuỗi được tạo từ phép lặp. Nếu chúng ta sử dụng cùng một chuỗi, một trình tối ưu hóa chẳng hạn như V8 của Google sẽ tối ưu hóa hơn nữa việc sử dụng chuỗi
Theo nguyên tắc thông thường - kiểm tra và xác minh mã của riêng bạn thay vì nhận lời khuyên theo mệnh giá
toLocaleUpperCase[] và toUpperCase[]
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
9 chuyển đổi chuỗi đã cho thành chữ hoa, tuân theo ngôn ngữ được sử dụng trên máy biên dịch mã. Ngoài ra, bạn có thể chỉ định ngôn ngữ thông qua đối số chuỗiTrong hầu hết các trường hợp,
10 vàConcatenating with Operator: 3.232ms Concatenating with Function: 1.509ms
9 sẽ trả về cùng một kết quả, ngay cả khi bạn không cung cấp bộ xác định ngôn ngữ. Chỉ với ánh xạ unicode không chuẩn, chẳng hạn như với tiếng Thổ Nhĩ Kỳ, thìConcatenating with Operator: 3.232ms Concatenating with Function: 1.509ms
9 sẽ tạo ra các kết quả khác nhauConcatenating with Operator: 3.232ms Concatenating with Function: 1.509ms
toLocaleLowerCase[] và toLowerCase[]
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
13 hoạt động giống như Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
9, nhưng chuyển đổi chuỗi thành chữ thường. Tương tự, Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
15 là ngôn ngữ bất khả tri. Mặc dù vậy, hãy lưu ý rằng một số thông tin nhất định sẽ bị mất khi chuyển đổi giữa chữ hoa và chữ thườngChẳng hạn, nếu chúng ta chuyển đổi
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
16 thành chữ hoa, rồi chuyển lại thành chữ thường, bạn sẽ mất một số thông tin nhất địnhMột lần nữa, điều này là do trong trường hợp này, tiếng Đức tuân theo ánh xạ Unicode tiêu chuẩn, do đó,
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
13 tạo ra kết quả tương tự như Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
15 - chỉ thay đổi từng ký tự thành ký tự viết thường của nóchuỗi con[]
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
19 trả về một chuỗi, chứa các ký tự bắt đầu từ chỉ mục Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
10 của chuỗi gốc cho đến chỉ mục Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
11 của chuỗi gốcNhư bạn có thể thấy, chỉ mục
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
12 không bao gồm, vì vậy chuỗi xuất ra là từ Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
10 đến Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
11Ngoài ra, điều này tất nhiên trả về một chuỗi mới, vì vậy bạn có thể nắm bắt nó bằng cách gán nó cho một biến tham chiếu mới hoặc chỉ sử dụng nó làm đầu vào cho một hàm mới. Chuỗi ban đầu không thay đổi
Nếu bạn cố gắng
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
15 với một Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
12 ngoài Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
17 của chuỗi - bạn chỉ cần xâu con tất cả các ký tự hiện có cho đến hếtHàm này đặc biệt hữu ích để cắt bớt đầu ra hoặc đầu vào hoặc thậm chí kiểm tra xem một chuỗi có bắt đầu bằng hoặc chứa một chuỗi con đã cho hay không
chất nền [bắt đầu, độ dài]
Tương tự như
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
15, hàm Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
19 được tạo bằng cách lấy một số ký tự nhất định từ một chuỗi gốc. Ở đây, chúng tôi chỉ định chỉ mục Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
10 và kích thước của chuỗi con mong muốn, là Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
17, thay vì điểm cuối cụ thểHãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Nếu độ dài vượt quá phạm vi của một chuỗi, bạn chỉ cần xâu con cho đến hết
tách ra[]
Hàm
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
32 tách một chuỗi thành một mảng các chuỗi bằng cách sử dụng Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
33 được cung cấp và thành một số phần Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
34Điều này có thể hữu ích để phân tích cú pháp các dòng CSV nếu bạn không sử dụng bất kỳ thư viện bên ngoài nào, vì chúng là các giá trị được phân tách bằng dấu phẩy, có thể dễ dàng phân tách thông qua hàm
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
35. Tuy nhiên, khi xử lý các tệp CSV, bạn sẽ muốn thực hiện xác thực nếu chúng không được định dạng đúngThông thường, bạn sẽ sử dụng các thư viện cho việc này vì chúng giúp mọi việc dễ dàng hơn nhiều
Nếu bạn muốn đọc thêm về cách đọc tệp CSV bằng JavaScript, hãy đọc hướng dẫn của chúng tôi về Đọc và ghi CSV bằng nút-csv và Đọc và ghi CSV bằng nút. js
charAt[] và chuỗi [chỉ mục]
Hàm
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
36 trả về ký tự tại Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
37 đã chỉ địnhVí dụ, bạn có thể sử dụng điều này để lặp qua một chuỗi và truy xuất nội dung của nó
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
1Kết quả nào trong
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
1Sự khác biệt giữa
38 vàConcatenating with Operator: 3.232ms Concatenating with Function: 1.509ms
39 là gì?Concatenating with Operator: 3.232ms Concatenating with Function: 1.509ms
Có một vài lý do tại sao bạn có thể thích
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
30 hơn ký hiệu mảngTuy nhiên, một con dao hai lưỡi ẩn chứa trong việc triển khai hàm
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
30 - nó đánh giá chỉ mục đã cho và xử lý nóĐó là lý do tại sao
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
32 được làm tròn xuống thành Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
33. Nó cũng sẽ thực hiện bước xử lý này đối với các đầu vào có thể không thực sự hợp lệ, nhưng sẽ tạo ảo giác về mã chạy tốtConcatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
3Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
34 được chuyển đổi thành Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
35, trong khi Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
36 sẽ được chuyển đổi thành Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
37. Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
38, Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
39, một mảng trống và một chuỗi rỗng cũng được chuyển đổi thành Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
37, vì vậy điều này vẫn chạy tốt, mặc dù theo trực giác thì không nênConcatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
3Mặt khác, sử dụng ký hiệu mảng hiện đại hơn
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
6Những điều này tạo ra một kết quả trực quan hơn, biểu thị sự thất bại của đầu vào
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
7Chỉ số[]
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
61 trả về giá trị chỉ mục của lần xuất hiện đầu tiên của Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
62 đã chỉ địnhNếu ký tự không tồn tại,
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
63 được trả vềBạn cũng có thể tùy chọn bỏ qua
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
64 ký tự đầu tiên bằng cách chỉ định một Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
65 làm đối số thứ haiỞ đây, chúng tôi bỏ qua 3 ký tự đầu tiên [lập chỉ mục dựa trên 0] và bắt đầu đếm từ ký tự thứ 4. Ngẫu nhiên, ký tự thứ 4 là một
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
66 mà chúng tôi đang tìm kiếm, vì vậy chỉ mục được trả vềlastIndexOf[]
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
67 trả về giá trị chỉ mục của lần xuất hiện cuối cùng của Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
62 đã chỉ địnhPhần lớn các quy tắc tương tự được áp dụng cho hàm
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
69Phương thức đếm ngược từ cuối chuỗi, nhưng nếu chúng ta cung cấp đối số
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
65 ở đây, thì chỉ mục được tính từ bên trái. Trong trường hợp của chúng taVà
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
71 đếm từ Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
72 đến Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
37, vì chúng tôi đã đặt Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
65 thành Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
72Tìm kiếm[]
Hàm
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
76 tìm kiếm một Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
77 và nếu tìm thấy, trả về chỉ mục của phần đầu của chuỗi tìm thấyTrong trường hợp có nhiều chuỗi khớp với từ khóa tìm kiếm, chẳng hạn như
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
78, chỉ chỉ mục bắt đầu của trường hợp khớp đầu tiên được trả vềSự kết luận
JavaScript là ngôn ngữ phổ biến rộng rãi, phổ biến trên web và việc làm quen với các chức năng tích hợp cơ bản sẽ giúp bạn tránh sử dụng các thư viện bên ngoài không cần thiết, khi bạn có thể đạt được kết quả trong vanilla JS
Trong hướng dẫn này, chúng ta đã xem xét các hàm tích hợp sẵn của chuỗi - một trong những loại dữ liệu phổ biến nhất có sẵn trong JavaScript