[
{
name: 'auth',
age: 23,
request: [{
success: true,
time: 1000
}, {
success: true,
time: 1200
},
{
success: true,
time: 900
}]
},
{
name: 'pay',
age: 24343,
request: [{
success: true,
time: 2000
}, {
success: false,
time: 500
},
{
success: false,
time: 5000
}]
}
]
const sortedArr = arr
.map(n => {
const success = n.requests.filter(n => n.success);
return {
item: n,
time: success.reduce((acc, n) => acc + n.time, 0),
success: success.length,
};
})
.sort((a, b) => (b.success - a.success) || (a.time - b.time))
.map(n => n.item);