Files
freeCodeCamp/curriculum/challenges/spanish/08-coding-interview-prep/rosetta-code/averages-mode.spanish.md

2.1 KiB

title, id, localeTitle, challengeType
title id localeTitle challengeType
Averages-Mode 594d8d0ab97724821379b1e6 594d8d0ab97724821379b1e6 5

Description

Escribe un programa para encontrar el valor de modo de una colección.

El caso donde la colección está vacía puede ser ignorado. Se debe tener cuidado para manejar el caso donde el modo no es único.

Si no es apropiado o no es posible admitir una colección general, use un vector (matriz), si es posible. Si no es apropiado o no es posible admitir un tipo de valor no especificado, use números enteros.

Instructions

Tests

tests:
  - text: <code>mode</code> es una función.
    testString: 'assert(typeof mode === "function", "<code>mode</code> is a function.");'
  - text: ' <code>mode([1, 3, 6, 6, 6, 6, 7, 7, 12, 12, 17])</code> debe ser igual a <code>[6]</code> '
    testString: 'assert.deepEqual(mode(arr1), [6], "<code>mode([1, 3, 6, 6, 6, 6, 7, 7, 12, 12, 17])</code> should equal <code>[6]</code>");'
  - text: 'el <code>mode([1, 2, 4, 4, 1])</code> debe ser igual a <code>[1, 4]</code> .'
    testString: 'assert.deepEqual(mode(arr2).sort(), [1, 4], "<code>mode([1, 2, 4, 4, 1])</code> should equal <code>[1, 4]</code>.");'

Challenge Seed

function mode (arr) {
  // Good luck!
  return true;
}

After Test

console.info('after the test');

Solution

function mode(arr) {
  const counter = {};
  let result = [];
  let max = 0;
  // for (const i in arr) {
  arr.forEach(el => {
    if (!(el in counter)) {
      counter[el] = 0;
    }
    counter[el]++;

    if (counter[el] === max) {
      result.push(el);
    }
    else if (counter[el] > max) {
      max = counter[el];
      result = [el];
    }
  });
  return result;
}