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)));