Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit c865654

Browse files
Clean up phone number formatting (#1015)
1 parent f736217 commit c865654

File tree

2 files changed

+21
-30
lines changed

2 files changed

+21
-30
lines changed

‎String/FormatPhoneNumber.js

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
// function that takes 10 digits and returns a string of the formatted phone number
2-
// e.g.: 1234567890 -> (123) 456-7890
3-
4-
const formatPhoneNumber = (numbers) => {
5-
const numbersString = numbers.toString()
6-
if ((numbersString.length !== 10) || isNaN(numbersString)) {
1+
/**
2+
* @description - function that takes 10 digits and returns a string of the formatted phone number e.g.: 1234567890 -> (123) 456-7890
3+
* @param {string} phoneNumber
4+
* @returns {string} - Format to (XXX) XXX-XXXX pattern
5+
*/
6+
const formatPhoneNumber = (phoneNumber) => {
7+
if ((phoneNumber.length !== 10) || isNaN(phoneNumber)) {
78
// return "Invalid phone number."
8-
throw new TypeError('Invalid phone number.')
9+
throw new TypeError('Invalid phone number!')
910
}
10-
const arr = '(XXX) XXX-XXXX'.split('')
11-
Array.from(numbersString).forEach(n => {
12-
arr[arr.indexOf('X')] = n
13-
})
14-
return arr.join('')
11+
12+
let index = 0
13+
return '(XXX) XXX-XXXX'.replace(/X/g, () => phoneNumber[index++])
1514
}
1615

17-
export { formatPhoneNumber}
16+
export default formatPhoneNumber

‎String/test/FormatPhoneNumber.test.js

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,15 @@
1-
import { formatPhoneNumber } from '../FormatPhoneNumber'
2-
3-
describe('PhoneNumberFormatting', () => {
4-
it('expects to return the formatted phone number', () => {
5-
expect(formatPhoneNumber('1234567890')).toEqual('(123) 456-7890')
6-
})
7-
8-
it('expects to return the formatted phone number', () => {
9-
expect(formatPhoneNumber(1234567890)).toEqual('(123) 456-7890')
10-
})
1+
import formatPhoneNumber from '../FormatPhoneNumber'
112

3+
describe('Testing the formatPhoneNumber functions', () => {
124
it('expects to throw a type error', () => {
13-
expect(() => { formatPhoneNumber('1234567') }).toThrow('Invalid phone number.')
5+
expect(() => formatPhoneNumber('1234567')).toThrow('Invalid phone number!')
6+
expect(() => formatPhoneNumber('123456text')).toThrow('Invalid phone number!')
7+
expect(() => formatPhoneNumber(12345)).toThrow('Invalid phone number!')
148
})
159

16-
it('expects to throw a type error', () => {
17-
expect(() => { formatPhoneNumber('123456text') }).toThrow('Invalid phone number.')
18-
})
19-
20-
it('expects to throw a type error', () => {
21-
expect(() => { formatPhoneNumber(12345) }).toThrow('Invalid phone number.')
10+
it('expects to return the formatted phone number', () => {
11+
expect(formatPhoneNumber('1234567890')).toEqual('(123) 456-7890')
12+
expect(formatPhoneNumber('2124323322')).toEqual('(212) 432-3322')
13+
expect(formatPhoneNumber('1721543455')).toEqual('(172) 154-3455')
2214
})
2315
})

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /