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

Đưa các số có 3 chữ số lên đầu mảng trong JavaScript

Mô tả bài toán

Viết hàm sắp xếp lại mảng sao cho các số có 3 chữ số (100-999) xuất hiện trước, giữ nguyên thứ tự tương đối của các nhóm.

Ví dụ minh họa

const numList = [1, 324, 34, 3434, 304, 2929, 23, 444];

const isThreeDigit = num => num > 99 && num < 1000;

const bringToFront = arr => {
  for (let i = 0; i < arr.length; i++) {
    if (!isThreeDigit(arr[i])) continue;
    arr.unshift(arr.splice(i, 1)[0]);
  }
};

bringToFront(numList);
console.log(numList);

Kết quả

[ 444, 304, 324, 1, 34, 3434, 2929, 23 ]

Phân tích

Thuật toán duyệt mảng, khi gặp số 3 chữ số, cắt nó ra (splice) và chèn vào đầu (unshift). Do duyệt từ trái sang phải, thứ tự các số 3 chữ số bị đảo ngược so với mảng gốc.

Cách tốt hơn

Dùng filter() tách hai nhóm rồi nối:

const bringToFront = arr => [
  ...arr.filter(isThreeDigit),
  ...arr.filter(n => !isThreeDigit(n))
];