Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm số lớn nhất trong mảng hỗn hợp kiểu dữ liệu trong JavaScript

Mô tả bài toán

Cho mảng chứa số, chuỗi, null, undefined, NaN. Tìm số lớn nhất (bỏ qua non-number).

Ví dụ minh họa

const arr = [23, 'hello', undefined, null, 21, 65, NaN, 1, undefined, 'hii'];

const pickBiggest = arr => {
  let max = -Infinity;
  for (let i = 0; i < arr.length; i++) {
    if (!+arr[i]) continue;
    max = Math.max(max, +arr[i]);
  }
  return max;
};

console.log(pickBiggest(arr));

Kết quả

65

Phân tích điều kiện !+arr[i]

Toán tử + ép kiểu sang number: số → chính nó, chuỗi số → số, chuỗi khác → NaN, null/undefined/false → 0. !NaN = true, !0 = true → continue. Số dương → false → xử lý.

Cách rõ ràng hơn

const pickBiggest = arr => 
  Math.max(...arr.filter(x => typeof x === 'number' && !isNaN(x)));