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.