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

Thay đổi mảng tại chỗ (in place) bằng splice() JavaScript

Viết hàm nhận mảng arr và số n, trả về mảng với các phần tử lặp lại không quá n lần, không làm thay đổi chỉ số các phần tử mong muốn.

Sử dụng hashmap đếm số lần xuất hiện, khi vượt quá n thì splice() xóa phần tử đó.

Ví dụ

const arr = [7, 26, 21, 41, 43, 2, 26, 24, 10, 26, 10, 10, 24, 35, 35, 35, 43, 26, 41, 7, 24, 24, 21, 24, 10, 35, 10, 7, 24, 7, 35, 26, 41, 35, 2, 43, 24, 2, 41, 26, 41, 7, 7, 26, 2, 10, 43, 10, 35, 41, 24, 7, 2, 2, 7, 2, 26, 24, 26, 43, 43, 21, 10, 28, 10];const array = [12, 4, 2, 12, 32, 21, 67, 4, 32, 5];const deleteExtra = (arr, n) => {  const map = {};  for (let i = 0; i < arr.length; i++) {    if (map[arr[i]]) {      if (map[arr[i]] >= n) {        arr.splice(i, 1);        i--;      } else {        map[arr[i]]++;      }      continue;    }    map[arr[i]] = 1;  }};deleteExtra(array, 1);deleteExtra(arr, 2);console.log(array);console.log(arr);

Kết quả

Đầu ra trong console sẽ là:

[  12, 4, 2, 32,  21, 67, 5 ][  7, 26, 21, 41, 43, 2, 26,  24, 10, 10, 24, 35, 35, 43,  41, 7, 21, 2, 28 ]