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

Lấy n số nhỏ nhất từ mảng giữ nguyên thứ tự gốc trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số arr và một số n. Hàm sẽ lấy n số nhỏ nhất từ mảng arr mà không làm thay đổi thứ tự tương đối của chúng. Nghĩa là chúng không được sắp xếp tăng/giảm mà giữ nguyên thứ tự ban đầu.

Ví dụ

Dưới đây là mã nguồn:

const arr = [6, 3, 4, 1, 2]; 
const num = 3; 
const smallestInOrder = (arr = [], num) => { 
  if(arr.length < num){ 
    return arr; 
  }; 
  const copy = arr.slice(); 
  copy.sort((a, b) => a - b); 
  const required = copy.splice(0, num); 
  required.sort((a, b) => { 
    return arr.indexOf(a) - arr.indexOf(b); 
  }); 
  return required; 
}; 
console.log(smallestInOrder(arr, num));

Kết quả

Kết quả đầu ra trong console:

[3, 1, 2]