/**
* Returns the most repeated element in an array
*
* @example
* mode([1, 2, 2, 3, 4]); // 2
* mode(["apple", "banana", "banana", "cherry"]); // "banana"
*
* @param {Array} args - the elements to get the mode
* @returns {*}
*
* @function mode
* @memberof Maths
*/
export function mode(...args) {
if (args.length === 1) return args[0];
const mode = {};
let max = args[0];
let count = 0;
for (let i = 0; i < args.length; i++) {
const el = args[i];
if (mode[el]) mode[el]++;
else mode[el] = 1;
if (count < mode[el]) {
max = el;
count = mode[el];
}
}
return max;
}