Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptの配列から任意の数/要素の奇妙な出現を削除する


次のような数値の配列があるとします-

const arr = [1, 6, 3, 1, 3, 1, 6, 3];

最初で唯一の引数としてそのような配列を1つ受け取るJavaScript関数を作成する必要があります。次に、関数は、奇数回(1回のみを除く)出現する配列内のそのようなすべての数値を検索する必要があります。

たとえば、

上記の配列では、1と3の数字は両方とも3回(奇数)表示されるため、関数はこれらの数字の3番目の出現を削除する必要があります。

そして、出力配列は次のようになります-

const output = [1, 6, 3, 1, 3, 6];

各番号の出現を追跡するためのハッシュマップを準備し、最後にマップを反復処理して、奇数回出現するその番号の最後の出現を削除します。

マップ内の各キーは配列値を保持します。最初の要素はその要素が出現した回数であり、2番目はそれが出現した最後のインデックスです。

このためのコードは-

になります
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]

  1. JavaScriptで配列内の最初の連続していない番号を見つける

    問題 数値の配列を受け取るJavaScript関数を作成する必要があります。関数は、前の要素の自然な後継ではない配列から最初の要素を返す必要があります。 これは、配列にそのような要素が少なくとも1つ存在する場合、前の要素の+1ではない要素を返す必要があることを意味します。 例 以下はコードです- const arr = [1, 2, 3, 4, 6, 7, 8]; const findFirstNonConsecutive = (arr = []) => {    for(let i = 0; i < arr.length - 1; i++){  

  2. JavaScriptの配列から奇数のみを返す

    問題 整数の配列arrを最初で唯一の引数として受け取るJavaScript関数を作成する必要があります。 配列は、すべての偶数と1つの奇数で構成されるか、すべての奇数と1つの偶数で構成されます。この関数は、配列からこの1つの異なる要素を返す必要があります。 たとえば、関数への入力が-の場合 入力 const arr = [5, 9, 7, 11, 34, 23, 77]; 出力 const output = 34; 出力の説明 配列はすべて奇数で構成されていますが、34は偶数です。 例 以下はコードです- const arr = [5, 9, 7, 11, 34, 23,