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]