使用 splice() JavaScript 就地更改数组

javascriptweb developmentobject oriented programming更新于 2025/10/10 1:48:17

我们需要编写一个函数,给定一个数组 arr 和一个数字 n,返回元素重复次数不超过 n 次的数组。我们必须在不干扰所需元素索引的情况下完成所有这些操作。所以,让我们为这个函数编写代码,

我们将保留哈希图中所有元素的计数,并且在迭代过程中,只要任何元素的计数超过最大计数,我们就会拼接该元素。此代码将是 −

示例

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);

输出

控制台中的输出将是 −

[
   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
]

相关文章


有用资源