Giả sử mảng số có các mục trùng lặp liên tiếp:
const testArr = [1, 1, 2, 2, 3, 3, 1, 1, 1];
Viết hàm compress xóa tất cả các mục trùng lặp liên tiếp tại chỗ (in place), kết quả:
const output = [1, 2, 3, 1];
Sử dụng đệ quy:
Ví dụ
const testArr = [1, 1, 2, 2, 3, 3, 1, 1, 1];const compress = (arr, len = 0, canDelete = false) => { if (len < arr.length) { if (canDelete) { arr.splice(len, 1); len--; } return compress(arr, len + 1, arr[len] === arr[len + 1]); } return;};compress(testArr);console.log(testArr);Kết quả
Đầu ra trong console sẽ là:
[ 1, 2, 3, 1 ]