Computer >> Máy Tính >  >> Lập trình >> Javascript

N giá trị tối đa hàng đầu từ mảng JavaScript đối tượng

Giả sử, chúng ta có một loạt các đối tượng như thế này -

const arr = [
   {"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":41,"slide":2,"view":0},
   {"id":0,"start":0,"duration":29,"slide":3,"view":0},
   {"id":0,"start":0,"duration":123,"slide":3,"view":0},
   {"id":0,"start":0,"duration":417,"slide":2,"view":0},
   {"id":0,"start":0,"duration":12,"slide":1,"view":0},
   {"id":0,"start":0,"duration":67,"slide":2,"view":0}
];

Chúng ta phải viết một hàm nhận trong mảng này và trả về n phần tử trên cùng của mảng trong một mảng khác (trên cùng có nghĩa là đối tượng có giá trị cao nhất trong khoảng thời gian).

Do đó, hãy viết mã cho vấn đề này -

Ví dụ

const arr = [
   {"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":41,"slide":2,"view":0},
   {"id":0,"start":0,"duration":29,"slide":3,"view":0},
   {"id":0,"start":0,"duration":123,"slide":3,"view":0},
   {"id":0,"start":0,"duration":417,"slide":2,"view":0},
   {"id":0,"start":0,"duration":12,"slide":1,"view":0},
   {"id":0,"start":0,"duration":67,"slide":2,"view":0}
];
const topN = (arr, n) => {
   if(n > arr.length){
      return false;
   }
   return arr
   .slice()
   .sort((a, b) => {
      return b.duration - a.duration
   })
   .slice(0, n);
};
console.log(topN(arr, 3));
console.log(topN(arr, 4));
console.log(topN(arr, 5));

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

[
   { id: 0, start: 0, duration: 417, slide: 2, view: 0 },
   { id: 0, start: 0, duration: 123, slide: 3, view: 0 },
   { id: 0, start: 0, duration: 117, slide: 4, view: 0 }
]
[
   { id: 0, start: 0, duration: 417, slide: 2, view: 0 },
   { id: 0, start: 0, duration: 123, slide: 3, view: 0 },
   { id: 0, start: 0, duration: 117, slide: 4, view: 0 },
   { id: 0, start: 0, duration: 67, slide: 2, view: 0 }
]
[
   { id: 0, start: 0, duration: 417, slide: 2, view: 0 },
   { id: 0, start: 0, duration: 123, slide: 3, view: 0 },
   { id: 0, start: 0, duration: 117, slide: 4, view: 0 },
   { id: 0, start: 0, duration: 67, slide: 2, view: 0 },
   { id: 0, start: 0, duration: 41, slide: 2, view: 0 }
]