首頁 >web前端 >js教程 >在 JavaScript 中從陣列中刪除任何數字/元素的奇數出現

在 JavaScript 中從陣列中刪除任何數字/元素的奇數出現

王林
王林轉載
2023-09-06 22:53:071550瀏覽

在 JavaScript 中从数组中删除任何数字/元素的奇数出现

假設我們有一個像這樣的數字數組-

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 中從陣列中刪除任何數字/元素的奇數出現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除