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

Tìm số tối đa thứ ba trong một mảng trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số làm đối số đầu tiên và duy nhất.

Nhiệm vụ của hàm của chúng ta là chọn và trả về số lớn nhất thứ ba từ mảng. Và nếu mảng không chứa bất kỳ số tối đa thứ ba nào thì chúng ta chỉ cần trả về số lớn nhất từ ​​mảng.

Ví dụ -

Nếu mảng đầu vào là -

const arr = [34, 67, 31, 87, 12, 30, 22];

Sau đó, kết quả đầu ra phải là -

const output = 34;

Ví dụ

Mã cho điều này sẽ là -

const arr = [34, 67, 31, 87, 12, 30, 22];
const findThirdMax = (arr = []) => {
   const map = {};
   let j = 0;
   for (let i = 0, l = arr.length; i < l; i++) {
      if(!map[arr[i]]){
         map[arr[i]] = true;
      }else{
         continue;
      };
      arr[j++] = arr[i];
   };
   arr.length = j;
   let result = -Infinity;
   if (j < 3) {
      for (let i = 0; i < j; ++i) {
         result = Math.max(result, arr[i]);
      }
      return result;
   } else {
      arr.sort(function (prev, next) {
         if (next >= prev) return -1;
         return 1;
      });
      return arr[j - 3]
   };
};
console.log(findThirdMax(arr));

Đầu ra

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

34