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

JavaScriptで要素をグループ化し、重複をカウントするための効率的なアルゴリズム


オブジェクトの配列があります。オブジェクトの1つのプロパティが別のオブジェクトと同じである場合、それは重複エントリと見なされます。

このプロパティでオブジェクトをグループ化し、「重複」が発生した回数に関する情報を保存します。

   X A B O
   Y X Z I
   Y X Z U
   X A B L
   Y X Z K

最初の値でグループ化します。

他の2つのプロパティも各複製で同じですが、最初の値を比較するだけで十分です。

-

のような結果をユーザーに表示する必要があります
   Y X Z (3)
   X A B (2)

このためのコードは-

になります
const arr = [
   {x: 'x', acc: 'acc', val: 'val'},
   {y: 'y', x: 'x', z: 'z'},
   {y: 'y', x: 'x', z: 'z'},
   {x: 'x', c: 'c', val: 'val'}
];
const countOccurrence = (arr = []) => {
   const res = {};
   arr.forEach (item => {
      Object.keys( item ).forEach (prop => {
         ( res[prop] ) ? res[prop] += 1 : res[prop] = 1;
      });
   });
   return res;
}
const groupByOccurrence = (data = []) => {
   const obj = countOccurrence(data);
   const res = Object.keys ( obj ).reduce ( ( acc, val ) => {
      ( acc[obj[val]] ) ? acc[obj[val]].push ( val ) : acc[obj[val]] = [val];
      return acc;
   }, {});
   return res;
}
console.log(groupByOccurrence(arr));

出力

And the output in the console will be:
{ '1': [ 'acc', 'c' ], '2': [ 'val', 'y', 'z' ], '4': [ 'x' ] }

  1. JavaScriptでGCDを計算するためのユークリッドアルゴリズム

    数学では、ユークリッドのアルゴリズムは、2つの数値の最大公約数(GCD)を計算する方法であり、最大公約数は、余りを残さずに両方を除算します。 ユークリッドの互除法は、2つの数の最大公約数は、大きい数を小さい数との差に置き換えても変化しないという原則に基づいています。 たとえば、21は252と105のGCD(252=21×12と105=21×5)であり、同じ数21は105と252 − 105=147のGCDでもあります。 この置換により2つの数値の大きい方が減少するため、このプロセスを繰り返すと、2つの数値が等しくなるまで、数値のペアが連続して小さくなります。それが発生した場合、それらは元

  2. JavaScriptの配列要素の重複を含むコモンズ

    問題 最初で唯一の引数として、文字列の配列arrを受け取るJavaScript関数を作成する必要があります。 この関数は、配列arr (重複を含む)内のすべての文字列に表示されるすべての文字の配列を返すことになっています。 。 たとえば、文字がすべての文字列で2回出現するが、3回出現しない場合、その文字を最終的な回答に2回含める必要があります。 たとえば、関数への入力が-の場合 const arr = ['door', 'floor', 'crook']; その場合、出力は-になります。 const output = ['r&#