This is an approach using Array.reduce()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
- First I determine for each unique value in the array how many times it does occur, by returning an object like
{"1": 3, "2": 3, "3": 1}
- Then I determine which are the values occurred most of the times
in the array, by returning an object like{"count": 3, "values": ["1", "2"]}
const data = ["1", "2", "1", "1", "2", "2", "3"];
//returns the number of time each unique value occurs in the array
const counts = data.reduce( (counts, item) => {
if(item in counts)
counts[item] += 1;
else
counts[item] = 1;
return counts;
}, {});
console.log(counts);
/*
{
"1": 3,
"2": 3,
"3": 1
}
*/
//returns which values and how many times occur the most
const max = Object.entries(counts)
.reduce((max, [value, count])=> {
if(count < max.count)
return max;
if(count == max.count){
max.values.push(value);
return max;
}
return {count: count, values: [value]};
},{count: 0, values: []});
console.log(max);
/*
{
"count": 3,
"values": [
"1",
"2"
]
}
*/
0
solved Array’s elements in JavaScript [duplicate]