So I have this array of objects
[
{
'1485958472927784961': {
name: 'bruno fiverr',
points: 6,
user_id: '1485958472927784961',
tweets: [Array]
},
'1414575563323420679': {
name: 'ju',
points: 7,
user_id: '1414575563323420679',
tweets: [Array]
}
}
]
and I would like to sort this array by the number of points the user has.
I am trying to get it working using array.sort with the following function:
var top10 = array.sort(function(a, b) { return a.points > b.points ? 1 : -1; }).slice(0, 10);
but all I get is the same array from start. is that possible?
>Solution :
You have an array with a single object whose values you want to sort by a property. For that you’ll want to:
- Access the first object in the outer array with
array[0] - Extract the values of the object as an array with
Object.values - Sort the values in descending order with the sort function
(a,b) => b.points - a.points - Obtain your 10 elements with
.slice(0,10)
const array = [
{
'1485958472927784961': {
name: 'bruno fiverr',
points: 6,
user_id: '1485958472927784961',
tweets: [Array]
},
'1414575563323420679': {
name: 'ju',
points: 7,
user_id: '1414575563323420679',
tweets: [Array]
}
}
];
const top10 = Object.values(array[0]).sort((a,b) => b.points - a.points).slice(0,10);
console.log(top10);