12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 'use strict';
- module.exports = function mode(key) {
- var values = [];
- var highestCount = 1;
- if (!this.items.length) {
- return null;
- }
- this.items.forEach(function (item) {
- var tempValues = values.filter(function (value) {
- if (key !== undefined) {
- return value.key === item[key];
- }
- return value.key === item;
- });
- if (!tempValues.length) {
- if (key !== undefined) {
- values.push({
- key: item[key],
- count: 1
- });
- } else {
- values.push({
- key: item,
- count: 1
- });
- }
- } else {
- tempValues[0].count += 1;
- var count = tempValues[0].count;
- if (count > highestCount) {
- highestCount = count;
- }
- }
- });
- return values.filter(function (value) {
- return value.count === highestCount;
- }).map(function (value) {
- return value.key;
- });
- };
|