mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-02-20 16:00:35 -05:00
1.4 KiB
1.4 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 594d8d0ab97724821379b1e6 | Averages/Mode | 1 | 302226 | averagesmode |
--description--
Write a function mode to find the value that appears most in an array.
The case where the collection is empty may be ignored. Care must be taken to handle the case where the mode is non-unique.
If it is not appropriate or possible to support a general collection, use a vector (array), if possible. If it is not appropriate or possible to support an unspecified value type, use integers.
--hints--
mode sollte eine Funktion sein.
assert(typeof mode === 'function');
mode([1, 3, 6, 6, 6, 6, 7, 7, 12, 12, 17]) should equal [6]
assert.deepEqual(mode(arr1), [6]);
mode([1, 2, 4, 4, 1]) should equal [1, 4].
assert.deepEqual(mode(arr2).sort(), [1, 4]);
--seed--
--after-user-code--
const arr1 = [1, 3, 6, 6, 6, 6, 7, 7, 12, 12, 17];
const arr2 = [1, 2, 4, 4, 1];
--seed-contents--
function mode(arr) {
return true;
}
--solutions--
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;
}