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

Lặp lại các số chẵn trong mảng JavaScript

Mô tả bài toán

Cho mảng số, lặp lại (duplicate) từng số chẵn ngay tại vị trí của nó.

Ví dụ minh họa

const arr = [1, 2, 5, 6, 8];

const repeatEvenNumbers = arr => {
  let end = arr.length - 1;
  for (let i = end; i > 0; i--) {
    if (arr[i] % 2 === 0) {
      arr.splice(i, 0, arr[i]);
    }
  }
  return arr;
};

console.log(repeatEvenNumbers(arr));

Kết quả

[ 1, 2, 2, 5, 6, 6, 8, 8 ]

Giải thích

Duyệt ngược từ cuối mảng để splice không làm lệch chỉ số các phần tử chưa xử lý.

Cách viết hàm thuần túy

const repeatEvenNumbers = arr => 
  arr.flatMap(x => x % 2 === 0 ? [x, x] : [x]);

Ưu điểm flatMap

Không thay đổi mảng gốc, code khai báo, dễ đọc, hiệu năng tốt.