Đã lâu rồi tôi không thực hiện Thử thách viết mã JavaScript nên tôi nghĩ rằng mình nên đưa nó trở lại vào thứ Sáu tuần này [hãy cho tôi biết nếu bạn thích những thứ này và tôi sẽ thêm một cái mới vào mỗi thứ Sáu]. 😄
Tôi đã tìm kiếm trên Codewars và gặp thử thách Tạo số điện thoại từ một mảng. Đây là những gì nó nói
Viết hàm nhận vào một mảng 10 số nguyên [từ 0 đến 9], trả về một chuỗi các số đó dưới dạng số điện thoại
Thí dụ
________số 8
Như bạn có thể thấy điều này rất dễ, nhưng đôi khi tôi thích thực hiện những thử thách đơn giản này để thư giãn một chút và hy vọng bạn cũng sẽ học được điều gì đó mới. Đó là một tình huống đôi bên cùng có lợi. 😄
Ghi chú. Tôi thực sự khuyên bạn nên tự mình giải quyết thử thách này trước khi tiếp tục. Bạn sẽ học được nhiều hơn bằng cách làm như vậy
Tôi tìm thấy hai giải pháp cho thử thách này
Giải pháp đầu tiên
Đây là "điều hiển nhiên" mà chúng ta sẽ sử dụng các phương thức .slice
và
function createPhoneNumber[arr] {
let str = arr.join[''];
return `[${str.substring[0, 3]}] ${str.substring[3, 6]}-${str.substring[6]}`;
}
0 để lấy ra các giá trị mà chúng ta cần từ mảng giữa các chỉ mục đã chỉ định. Ngoài ra, chúng tôi sẽ sử dụng các ký tự mẫu chuỗi để có mã sạch hơnfunction createPhoneNumber[arr] {
return `[${arr.slice[0, 3].join['']}] ${arr.slice[3, 6].join['']}-${arr.slice[6].join['']}`;
}
Hoặc chúng ta có thể tạo một chuỗi ngay từ đầu bằng cách viết tắt các ký tự
function createPhoneNumber[arr] {
let str = arr.join[''];
return `[${str.substring[0, 3]}] ${str.substring[3, 6]}-${str.substring[6]}`;
}
0 và sau đó sử dụng function createPhoneNumber[arr] {
let str = arr.join[''];
return `[${str.substring[0, 3]}] ${str.substring[3, 6]}-${str.substring[6]}`;
}
2 để loại bỏ các ký tự cụ thểfunction createPhoneNumber[arr] {
let str = arr.join[''];
return `[${str.substring[0, 3]}] ${str.substring[3, 6]}-${str.substring[6]}`;
}
Giải pháp thứ hai
Đối với điều này, chúng tôi sẽ tạo một
function createPhoneNumber[arr] {
let str = arr.join[''];
return `[${str.substring[0, 3]}] ${str.substring[3, 6]}-${str.substring[6]}`;
}
3 sẽ được sử dụng để function createPhoneNumber[arr] {
let str = arr.join[''];
return `[${str.substring[0, 3]}] ${str.substring[3, 6]}-${str.substring[6]}`;
}
4 [chèn] các số bên trong chuỗi. Lưu ý rằng hàm function createPhoneNumber[arr] {
let str = arr.join[''];
return `[${str.substring[0, 3]}] ${str.substring[3, 6]}-${str.substring[6]}`;
}
4 sẽ chỉ tìm và thay thế lần xuất hiện đầu tiên của function createPhoneNumber[arr] {
let str = arr.join[''];
return `[${str.substring[0, 3]}] ${str.substring[3, 6]}-${str.substring[6]}`;
}
1 trong trường hợp này [đó là những gì chúng ta muốn], sau đó nó sẽ chuyển sang function createPhoneNumber[arr] {
let str = arr.join[''];
return `[${str.substring[0, 3]}] ${str.substring[3, 6]}-${str.substring[6]}`;
}
1 tiếp theo trong lần lặp tiếp theo, v.v. John giữ một bản sao lưu danh bạ điện thoại cá nhân cũ của mình dưới dạng tệp văn bản. Trên mỗi dòng của tệp, anh ta có thể tìm thấy số điện thoại [được định dạng là +X-abc-def-ghij trong đó X là viết tắt của một hoặc hai chữ số], tên tương ứng giữa < và > và địa chỉ
Thật không may, mọi thứ đều bị trộn lẫn, mọi thứ không phải lúc nào cũng theo cùng một thứ tự, các dòng lộn xộn với các ký tự không phải chữ và số
Ví dụ về các dòng danh bạ điện thoại của John
“/+1-541-754-3010 156 Alphand_St. \N"
" 133, Xanh, Rd. NY-56423 ;+1-541-914-3010. \N"
" +48-421-674-8974 Qua Quirinal Roma\n"
Bạn có thể giúp John với một chương trình, với các dòng trong danh bạ điện thoại của anh ấy và một số điện thoại sẽ trả về một chuỗi cho số này không. “Điện thoại => số, Tên => tên, Địa chỉ => địa chỉ”
ví dụ
s = “/+1-541-754-3010 156 Alphand_St. \ n 133, Màu xanh lá cây, Rd. NY-56423 ;+1-541-914-3010. \N"
phone[s, “1-541-754-3010”] sẽ trả về “Phone => 1-541-754-3010, Name => J Steeve, Address => 156 Alphand St. ”
Có thể xảy ra trường hợp, đối với một vài số điện thoại, có nhiều người cho một số điện thoại - nói nb-, sau đó
devsoo
Theo dõi
ngày 1 tháng 1 năm 2020
·
1 phút đọc
mật mã 05. Tạo số điện thoại
[Chi tiết]
Viết một hàm chấp nhận một mảng gồm 10 số nguyên [từ 0 đến 9], trả về một chuỗi các số đó ở dạng số điện thoại.
createPhoneNumber[[1,2,3,4,5,6,7,8,9,0]] // returns "[123] 456-7890"
Định dạng trả về phải chính xác để hoàn thành thử thách này.
Đừng quên khoảng trắng sau dấu ngoặc đơn đóng.
[Giải pháp của tôi]
Tôi không nghĩ, tôi có thể nối mảng trước.
Nếu tham gia mảng trước thì tôi không phải dùng regex.
function createPhoneNumber[numbers]{
return `
[${numbers.slice[0,3].join[].replace[/,/g, '']}]
${numbers.slice[3,6].join[].replace[/,/g,'']}
-${numbers.slice[6].join[].replace[/,/g, '']}
`;
}
[Giải Pháp Thông Minh1]
Giải pháp này giúp nối mảng ngay lập tức.
Vì vậy, Giải pháp này chỉ sử dụng Phương thức chuỗi con.
Thật tuyệt.
function createPhoneNumber[numbers]{
numbers = numbers.join[''];
return '[' + numbers.substring[0,3] + ']'
+ numbers.substring[3, 6]
+ '-'
+ numbers.substring[6];
}
[Giải Pháp Thông Minh2]
Giải pháp này tạo định dạng đầu tiên.
Vì vậy, định dạng “x” thay thế chỉ số mảng số bằng cách sử dụng vòng lặp.
function createPhoneNumber[numbers]{
var format = "[xxx] xxx-xxxx"; for [var i=0; i