使用 JavaScript 中的 splice() 对数组就地更改
我们需要编写一个函数,给定一个数组 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 ]
广告
数据结构
网络
数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 程序设计
C++
C#
MongoDB
MySQL
Javascript
PHP