Определение частоты появления элементов в массиве

Подсчитывайте значения в объекте без прототипа, чтобы ключи вроде __proto__ не конфликтовали со служебными свойствами. Для чисел из примера получится {'1': 1, '2': 2, '3': 3}.

Короткий ответ

Что ответить на собеседовании

Подсчитывайте значения в объекте без прототипа, чтобы ключи вроде proto не конфликтовали со служебными свойствами. Для чисел из примера получится {'1': 1, '2': 2, '3': 3}.

Подробный разбор

Ответ с пояснениями

Условие

Реализовать функцию countOccurrences, которая возвращает объект с числом появлений каждого значения из переданного массива.

function countOccurrences(inputArray) {}
console.log(countOccurrences([1, 2, 2, 3, 3, 3])); // [ 1: 1, 2: 2, 3: 3 ]

Ответ

Подсчитывайте значения в объекте без прототипа, чтобы ключи вроде proto не конфликтовали со служебными свойствами. Для чисел из примера получится {'1': 1, '2': 2, '3': 3}.

function countOccurrences(inputArray) {
  const counts = Object.create(null);
  for (const value of inputArray) {
    const key = String(value);
    counts[key] = (counts[key] ?? 0) + 1;
  }
  return counts;
}

В условии результат записан квадратными скобками, но именованные счётчики здесь образуют объект, не массив. Строковое преобразование объединяет число 1 и строку '1'; разные обычные объекты также могут дать одинаковый ключ. Если требуется различать типы и ссылки, вместо объекта используйте Map.

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

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

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

Подробнее