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

Trả về hai phần tử lớn nhất từ mảng JavaScript

Cho mảng số chưa sắp xếp. Viết hàm trả về mảng 2 phần tử lớn nhất (top 2). Yêu cầu: một lần duyệt (linear time), dùng một vòng lặp hoặc một ES6 method duy nhất.

Sử dụng Array.prototype.reduce():

Ví dụ

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

Kết quả

Đầu ra trong console sẽ là:

[ 234, 87 ]