使用 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 ]
廣告