Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

รับค่าสูงสุดต่อคีย์ในอาร์เรย์ JavaScript


สมมติว่าเรามีอาร์เรย์ของวัตถุเช่นนี้ -

const arr = [
   {a:1, b:"apples"},
   {a:3, b:"apples"},
   {a:4, b:"apples"},
   {a:1, b:"bananas"},
   {a:3, b:"bananas"},
   {a:5, b:"bananas"},
   {a:6, b:"bananas"},
   {a:3, b:"oranges"},
   {a:5, b:"oranges"},
   {a:6, b:"oranges"},
   {a:10, b:"oranges"}
];

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าวและส่งกลับอาร์เรย์ของอ็อบเจ็กต์

อาร์เรย์ควรมีออบเจ็กต์สำหรับค่าที่ไม่ซ้ำกันแต่ละค่าของคุณสมบัติ "b" โดยที่คุณสมบัติ "a" มีค่าสูงสุด

รหัสสำหรับสิ่งนี้จะเป็น −

const arr = [
   {a:1, b:"apples"},
   {a:3, b:"apples"},
   {a:4, b:"apples"},
   {a:1, b:"bananas"},
   {a:3, b:"bananas"},
   {a:5, b:"bananas"},
   {a:6, b:"bananas"},
   {a:3, b:"oranges"},
   {a:5, b:"oranges"},
   {a:6, b:"oranges"},
   {a:10, b:"oranges"}
];

const pickHighest = arr => {
   const res = [], map = {};

   arr.forEach(el => {
      if (!(el['b'] in map)) {
         map[el['b']] = res.push(el) - 1;
         return;
      };
      if(res[map[el['b']]]['a'] < el['a']){
         res[map[el['b']]] = el;
      };
   });
   return res;
};
console.log(pickHighest(arr));

ต่อไปนี้เป็นผลลัพธ์บนคอนโซล -

[
   { a: 4, b: 'apples' },
   { a: 6, b: 'bananas' },
   { a: 10, b: 'oranges' }
]