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

กลับองค์ประกอบสองอันดับแรกจากอาร์เรย์ JavaScript


เรามีอาร์เรย์ของตัวเลขใน JavaScript ที่มีตัวเลขในลำดับที่ไม่เรียงลำดับ งานของเราคือเขียนฟังก์ชันที่รับอาร์เรย์ของตัวเลขนี้และส่งกลับอาร์เรย์ของสององค์ประกอบ ซึ่งเป็นองค์ประกอบสองอันดับแรกของอาร์เรย์ (สององค์ประกอบที่ยิ่งใหญ่ที่สุดของอาร์เรย์)

เราต้องทำสิ่งนี้ในครั้งเดียว นั่นคือ เราต้องใช้วิธีนี้ในเวลาเชิงเส้นเช่นโดยใช้เพียงอันเดียวสำหรับลูปหรือถ้าเราใช้ฟังก์ชัน ES6 เราต้องใช้เพียงครั้งเดียวและหลีกเลี่ยงการซ้อนวิธีที่จะเพิ่มเวลา ความซับซ้อน

ตอนนี้เรามาเขียนโค้ดโดยใช้เมธอด Array.prototype.reduce() -

ตัวอย่าง

const arr = [23, 65, 67, 23, 2, 6, 87, 23, 45, 65, 3, 234, 3];
const topTwo = arr => {
   if(arr.length < 2){
      return false;
   };
   return arr.reduce((acc, val) => {
      if(val > acc[0]){
         let t = acc[0];
         acc[0] = val;
         acc[1] = t;
      }else if(val > acc[1]){
         acc[1] = val;
      };
      return acc;
   }, [-Infinity, -Infinity]);
};
console.log(topTwo(arr));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

[ 234, 87 ]