假設我們有一個像這樣的數字數組 –
const arr = [1, 6, 3, 1, 3, 1, 6, 3];
登錄后復制
我們需要編寫一個 JavaScript 函數,該函數接受一個這樣的數組作為第一個也是唯一的參數。然后該函數應該在數組中查找出現奇數次(不包括僅一次)的所有此類數字。
例如,
在上面的數組中,數字1 和 3 都出現了 3 次(奇數),因此我們的函數應該刪除這兩個數字的第三次出現。
輸出數組應該如下所示 –
const output = [1, 6, 3, 1, 3, 6];
登錄后復制
我們將準備一個哈希映射來跟蹤每個數字的出現次數,最后我們將迭代該映射以刪除最后一次出現的出現奇數次的該數字。
映射中的每個鍵都將保存一個數組值,其中第一個元素是該元素出現的次數,第二個元素是該元素出現的最后一個索引。
示例
其代碼為 –
?現場演示
const arr = [1, 6, 3, 1, 3, 1, 6, 3]; const removeOddOccurence = (arr =[]) => { // keeping the original array unaltered const copy = arr.slice(); const map = {}; arr.forEach((num, ind) => { if(map.hasOwnProperty(num)){ map[num][0]++; map[num][1] = ind; }else{ map[num] = [1, ind]; }; }); for(const key in map){ const [freq, index] = map[key]; if(freq !== 1 && freq % 2 === 1){ copy.splice(index, 1, ''); }; }; return copy.filter(el => el !== ''); }; console.log(removeOddOccurence(arr));
登錄后復制
輸出
控制臺中的輸出將是 –
[1, 6, 3, 1, 3, 6]
登錄后復制
以上就是在 JavaScript 中從數組中刪除任何數字/元素的奇數出現的詳細內容,更多請關注www.92cms.cn其它相關文章!