You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
855 B
42 lines
855 B
4 years ago
|
'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;
|
||
|
});
|
||
|
};
|