Tạo số điện thoại bằng javascript

Tạo số điện thoại bằng javascript

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 format = format.replace('x', numbers[i]);
}

return format;
}

[Chuyển thể]

Chúng ta được yêu cầu viết một hàm JavaScript nhận vào một mảng chính xác 10 số nguyên dương, arr, làm đối số đầu tiên và duy nhất

Sau đó, chức năng của chúng tôi sẽ trả về một chuỗi có định dạng của chuỗi số điện thoại

Ví dụ: nếu đầu vào của hàm là -

Đầu vào

const arr = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0];

đầu ra

const output = '(987) 654-3210';

Thí dụ

Sau đây là mã -

Bản thử trực tiếp

const arr = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
const createNumber = (arr = []) => {
   let res = '';
   arr = arr.map(String);
   res += `(${arr[0]+arr[1]+arr[2]}) `;
   res += `${arr[3] + arr[4] + arr[5]}-`;
   res += arr[6] + arr[7] + arr[8] + arr[9];
   return res;
};
console.log(createNumber(arr));

đầu ra

(987) 654-3210

từ chối trách nhiệm. có NHIỀU cách để giải quyết vấn đề này, đây là câu trả lời mà tôi sẽ thấy hoặc sử dụng trong một cuộc phỏng vấn viết mã và sẽ chấp nhận như một câu trả lời đúng

TLDR. Giải pháp ở dưới cùng của bài viết

Vấn đề

Viết hàm chấp nhận một chuỗi số hoặc một số và chuyển đổi nó sang định dạng số điện thoại của Hoa Kỳ

ví dụ

________số 8

Dung dịch

Hãy viết ra những gì chúng ta sẽ cần phải làm

  • tạo một chức năng chấp nhận một đầu vào

    • kiểm tra xem chuỗi có phải là số không (không bao gồm ký tự hoặc chữ cái) và không phải là null hoặc không xác định

    • kiểm tra xem đầu vào có phải là chuỗi không nếu không chuyển đổi nó thành chuỗi

    • kiểm tra xem độ dài đầu vào có phải là 10 không (số của chúng tôi là 10 chữ số)

      • nếu nó là

        • định dạng nó thành xxx-xxx-xxxx

      • nếu không kiểm tra xem nó có nhỏ hơn 10 không

        • lỗi trả về không được cung cấp đủ số vui lòng chuyển một số gồm 10 chữ số

        • nếu không kiểm tra xem chiều dài có lớn hơn 10 không

          • trả lại đã được cung cấp quá nhiều số, vui lòng chuyển một số gồm 10 chữ số

          • nếu không gửi được thì đã xảy ra lỗi để bắt tất cả chỉ trong trường hợp

Nếu bạn không quen với các câu lệnh if, vui lòng xem trang MDN này trước khi tiếp tục

Đầu tiên chúng ta cần tạo chức năng của mình

const phoneFormat = (input) => {
    //check if the string is a number (doesn’t include characters or letters) and not null or undefined
    //check if the input is a string if not convert it into a string
    //check if the input length is 10 (us number is 10 digits)
        //if it is
            //format it to xxx-xxx-xxxx
            //if not check if it is less than 10
                //return error was not supplied enough numbers please pass a 10 digit number
                //if not check if length is greater than 10
                    //return was supplied too many numbers please pass a 10 digit number
                    //if not send something went wrong error for a catch all just in case
}

Chúng ta cần kiểm tra xem chuỗi có phải là số (không bao gồm các ký tự hoặc chữ cái) và không null hoặc không xác định. Để làm điều này, chúng ta sẽ sử dụng isNaN(). NaN là viết tắt của không phải là một số. hàm JavaScript tích hợp không đếm các chuỗi chỉ có số dưới dạng số. Nếu bạn chưa quen với điều này, vui lòng xem trang MDN này trước khi tiếp tục

Chúng tôi cũng sẽ sử dụng chữ mẫu để làm cho lỗi của chúng tôi hữu ích hơn một chút nếu bạn không quen với chữ mẫu, vui lòng đọc trang MDN này

function createPhoneNumber(numbers){
return `
(${numbers.slice(0,3).join().replace(/,/g, '')})
${numbers.slice(3,6).join().replace(/,/g,'')}
-${numbers.slice(6).join().replace(/,/g, '')}
`;
}
0

Nếu đầu vào của chúng tôi không phải là một chuỗi, chúng tôi cần biến nó thành một chuỗi để chúng tôi có thể thực hiện chuyển đổi của mình. Nếu bạn không quen thuộc với. toString() vui lòng xem trang MDN này trước khi tiếp tục

function createPhoneNumber(numbers){
return `
(${numbers.slice(0,3).join().replace(/,/g, '')})
${numbers.slice(3,6).join().replace(/,/g,'')}
-${numbers.slice(6).join().replace(/,/g, '')}
`;
}
1

Vì số điện thoại của Hoa Kỳ được tạo thành từ 10 chữ số, chúng tôi cần kiểm tra xem đầu vào của chúng tôi có phải là 10 chữ số không

function createPhoneNumber(numbers){
return `
(${numbers.slice(0,3).join().replace(/,/g, '')})
${numbers.slice(3,6).join().replace(/,/g,'')}
-${numbers.slice(6).join().replace(/,/g, '')}
`;
}
2

Nếu đầu vào là 10 chữ số, chúng ta cần định dạng nó thành số điện thoại. Nếu bạn không quen thuộc với. replace() vui lòng xem trang MDN này. Nếu bạn không quen thuộc với regex hoặc muốn hiểu rõ hơn về nó, vui lòng xem trang này. Nó là một công cụ tuyệt vời để thử nghiệm và học tập 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, '')}
`;
}
3

Bạn sẽ nhận thấy rằng tôi đã định dạng chuỗi của mình bằng dấu gạch ngang giữa mỗi phần (“$1-$2-$3“) nếu bạn muốn có dấu ngoặc đơn trên 3 chữ số đầu tiên thay vì bạn chỉ cần tạo chuỗi (“($1)$2-$3“

Quay trở lại câu lệnh if other của chúng ta, chúng ta sẽ kiểm tra xem đầu vào có nhỏ hơn 10 không. Nếu bạn không muốn lỗi của mình cụ thể theo độ dài, bạn có thể có một câu lệnh if other đơn giản, đó là nếu độ dài là định dạng 10, ngược lại, trả về thông báo về việc đó là đầu vào không hợp lệ. Tuy nhiên, tôi muốn làm cho các thông báo lỗi của mình cụ thể hơn nên trước tiên tôi sẽ kiểm tra xem đầu vào có nhỏ hơn 10 không và nếu nó trả về một thông báo yêu cầu người dùng cung cấp một số có 10 chữ số. Chúng tôi có thể tạo một mẫu theo nghĩa đen ở đây và cho họ biết họ đã cung cấp những gì nhưng tôi quyết định cho họ biết rằng họ không cung cấp đủ số lượng là đủ. Nếu bạn muốn gửi cho họ những gì họ đã cung cấp, bạn có thể tham khảo tin nhắn được gửi trong kiểm tra isNaN của chúng tôi

function createPhoneNumber(numbers){
return `
(${numbers.slice(0,3).join().replace(/,/g, '')})
${numbers.slice(3,6).join().replace(/,/g,'')}
-${numbers.slice(6).join().replace(/,/g, '')}
`;
}
4

Nếu đầu vào không nhỏ hơn 10, chúng tôi sẽ kiểm tra xem đầu vào có lớn hơn 10 không. Một số người có thể chỉ cần đặt một cái khác ở đây và trả lại tin nhắn cho lớn hơn 10. Tuy nhiên, điều này không sao, trong các trường hợp khác, tôi đã thấy điều gì khác ngoài việc kiểm tra logic bị sai và sau đó bạn đang gửi lại lỗi sai. Ví dụ: nếu có điều gì đó không ổn ngoài độ dài của chuỗi mà logic khác không bắt được, chúng tôi sẽ nhận được thông báo cho biết 'đã cung cấp quá nhiều số, vui lòng chuyển một số có 10 chữ số' trong khi thực tế đó không phải là vấn đề. Đối với ví dụ đơn giản này, điều đó có thể ổn vì tôi không thể nghĩ ra nhiều điều sai trái mà chúng tôi không có logic nhưng thật tốt khi có một lỗi bắt tất cả để đề phòng, vì vậy tôi sẽ thêm một kiểm tra cụ thể để biết rõ hơn

function createPhoneNumber(numbers){
return `
(${numbers.slice(0,3).join().replace(/,/g, '')})
${numbers.slice(3,6).join().replace(/,/g,'')}
-${numbers.slice(6).join().replace(/,/g, '')}
`;
}
5

Bây giờ tất cả những gì chúng ta cần là bắt hết lỗi và tất cả chúng ta đều ổn

function createPhoneNumber(numbers){
return `
(${numbers.slice(0,3).join().replace(/,/g, '')})
${numbers.slice(3,6).join().replace(/,/g,'')}
-${numbers.slice(6).join().replace(/,/g, '')}
`;
}
6

Vui lòng để lại giải pháp của bạn mà bạn đã đưa ra trong phần bình luận. Nếu bạn có bất kỳ thử thách nào bạn muốn hoàn thành, hãy để lại điều đó trong các bình luận bên dưới, bạn có thể thấy nó xuất hiện. Nếu bạn muốn nhận thử thách qua email cho bạn mỗi ngày vào buổi sáng và thông báo khi giải pháp được đăng, hãy đăng ký bên dưới

Làm cách nào để tạo số điện thoại trong JavaScript?

Ví dụ. createPhoneNumber([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]) // => trả về "(123) 456-7890" The returned format must be correct in order to complete this challenge. Don't forget the space after the closing parentheses!

Làm cách nào để thêm định dạng số điện thoại trong JavaScript?

Giải pháp .
kiểm tra xem chuỗi có phải là số không (không bao gồm ký tự hoặc chữ cái) và không phải là null hoặc không xác định
kiểm tra xem đầu vào có phải là chuỗi không nếu không chuyển đổi nó thành chuỗi
kiểm tra xem độ dài đầu vào có phải là 10 không (số của chúng tôi là 10 chữ số) nếu đúng. định dạng nó thành xxx-xxx-xxxx. nếu không kiểm tra xem nó có nhỏ hơn 10 không

Làm cách nào để xác thực số điện thoại trong JavaScript?

Xác thực số điện thoại bằng JavaScript Regex và HTML . kiểm tra (đầu vào_str); . getElementById('myform_phone'). giá trị;