Соберите десять цифр в строку, затем выделите части длиной 3, 3 и 4. Перед форматированием проверьте размер массива и допустимость каждой цифры.
Функция, формирующая телефонный номер из массива цифр
Соберите десять цифр в строку, затем выделите части длиной 3, 3 и 4. Перед форматированием проверьте размер массива и допустимость каждой цифры.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо реализовать функцию, получающую на вход массив из 10 целых чисел (каждое от 0 до 9) и возвращающую строку, представляющую эти цифры в виде телефонного номера. Пример использования:
formatPhoneNumber([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]) // => возвращает "(123) 456-7890"
Строка‑результат должна точно соответствовать указанному шаблону: открывающая скобка, три цифры, закрывающая скобка, пробел, три цифры, дефис и последние четыре цифры.
Ответ
Соберите десять цифр в строку, затем выделите части длиной 3, 3 и 4. Перед форматированием проверьте размер массива и допустимость каждой цифры.
function formatPhoneNumber(digits) {
if (!Array.isArray(digits) || digits.length !== 10 ||
!Array.from(digits).every(x => Number.isInteger(x) && x >= 0 && x <= 9)) {
throw new TypeError('Нужно ровно десять цифр');
}
const s = digits.join('');
return '(' + s.slice(0, 3) + ') ' + s.slice(3, 6) + '-' + s.slice(6);
}
Пустые позиции массива не должны проходить проверку, поэтому используется Array.from. Ведущие нули сохраняются: номер не преобразуется целиком в число. Функция форматирует данные по заданному шаблону, а не подтверждает существование номера.