92sharmasaurabh
92sharmasaurabh

Reputation: 166

Top 2 max value from array of object

I have an array of object like

[ {"id":0,"start":0,"duration":117,"slide":4,"view":0},
  {"id":0,"start":0,"duration":12,"slide":1,"view":0},
  {"id":0,"start":0,"duration":8,"slide":3,"view":0},
  {"id":0,"start":0,"duration":7,"slide":2,"view":0}
];

I want to get 3 objects with top 3 values of duration.

Upvotes: 0

Views: 53

Answers (4)

Maheswara Reddy
Maheswara Reddy

Reputation: 9

var myList = [ {"id":0,"start":0,"duration":117,"slide":4,"view":0},
      {"id":0,"start":0,"duration":12,"slide":1,"view":0},
      {"id":0,"start":0,"duration":8,"slide":3,"view":0},
      {"id":0,"start":0,"duration":7,"slide":2,"view":0}
      ];

outList = myList.sort(function(a,b){ return b.duration - a.duration; }).slice(0,3);

return outList;

Upvotes: 1

Nina Scholz
Nina Scholz

Reputation: 386868

You could sort them with Array#sort, descending and take the first three elements.

var array = [{ id: 0, start: 0, duration: 7, slide: 2, view: 0 }, { id: 0, start: 0, duration: 12, slide: 1, view: 0 }, { id: 0, start: 0, duration: 117, slide: 4, view: 0 }, { id: 0, start: 0, duration: 8, slide: 3, view: 0 }],
    top3duration = array.sort(function (a, b) { 
        return b.duration - a.duration;
    }).slice(0, 3);

console.log(top3duration);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Upvotes: 2

KrishCdbry
KrishCdbry

Reputation: 1059

 yourArray.sort(function(a,b){ 
      return b.duration - a.duration;
 }).splice(0,3);

 console.log(yourArray);   // Will give top 3 objects of high duration.

But your mainArray will be modified. If you want those as new array then go with slice(0,3) and assign to a new array as [Fallenreaper's] answer

Upvotes: 1

Fallenreaper
Fallenreaper

Reputation: 10704

I am going to do your stuff in a few quick steps.

var myList = [ {"id":0,"start":0,"duration":117,"slide":4,"view":0},
  {"id":0,"start":0,"duration":12,"slide":1,"view":0},
  {"id":0,"start":0,"duration":8,"slide":3,"view":0},
  {"id":0,"start":0,"duration":7,"slide":2,"view":0}
  ];
outList = myList.sort(function(a,b){ return b.duration - a.duration; }).slice(0,3);
return outList;

Upvotes: 0

Related Questions