Функция, формирующая телефонный номер из массива цифр

Соберите десять цифр в строку, затем выделите части длиной 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. Ведущие нули сохраняются: номер не преобразуется целиком в число. Функция форматирует данные по заданному шаблону, а не подтверждает существование номера.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее