假設(shè)我們有一個像這樣的數(shù)字?jǐn)?shù)組 –
const arr = [1, 6, 3, 1, 3, 1, 6, 3];
登錄后復(fù)制
我們需要編寫一個 JavaScript 函數(shù),該函數(shù)接受一個這樣的數(shù)組作為第一個也是唯一的參數(shù)。然后該函數(shù)應(yīng)該在數(shù)組中查找出現(xiàn)奇數(shù)次(不包括僅一次)的所有此類數(shù)字。
例如,
在上面的數(shù)組中,數(shù)字1 和 3 都出現(xiàn)了 3 次(奇數(shù)),因此我們的函數(shù)應(yīng)該刪除這兩個數(shù)字的第三次出現(xiàn)。
輸出數(shù)組應(yīng)該如下所示 –
const output = [1, 6, 3, 1, 3, 6];
登錄后復(fù)制
我們將準(zhǔn)備一個哈希映射來跟蹤每個數(shù)字的出現(xiàn)次數(shù),最后我們將迭代該映射以刪除最后一次出現(xiàn)的出現(xiàn)奇數(shù)次的該數(shù)字。
映射中的每個鍵都將保存一個數(shù)組值,其中第一個元素是該元素出現(xiàn)的次數(shù),第二個元素是該元素出現(xiàn)的最后一個索引。
示例
其代碼為 –
?現(xiàn)場演示
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));
登錄后復(fù)制
輸出
控制臺中的輸出將是 –
[1, 6, 3, 1, 3, 6]
登錄后復(fù)制
以上就是在 JavaScript 中從數(shù)組中刪除任何數(shù)字/元素的奇數(shù)出現(xiàn)的詳細(xì)內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!






