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

JavaScriptの要素の頻度の増加に基づいて配列を並べ替える


問題

最初で唯一の引数として、数値の配列arrを受け取るJavaScript関数を作成する必要があります。

配列arrには、いくつかの重複が含まれている可能性があります。この関数は、出現回数が最も少ない要素が最初に配置され、次に頻度が高くなる要素が配置されるように配列を並べ替えることを想定しています。

2つの要素が配列に同じ回数出現する場合は、昇順で配置する必要があります。

たとえば、関数への入力が

入力

const arr = [5, 4, 5, 4, 2, 1, 12];

出力

const output = [1, 2, 12, 4, 4, 5, 5];

出力の説明

数字の1、2、12はすべて1回表示されるため、昇順で並べ替えられ、4と5は両方とも2回表示されます。

以下はコードです-

const arr = [5, 4, 5, 4, 2, 1, 12];
const sortByAppearance = (arr = []) => {
   arr.sort((a, b) => a - b);
   const res = [];
   const searched = {};
   const countAppearance = (list, target) => {
      searched[target] = true;
      let count = 0;
      let index = list.indexOf(target);
      while(index !== -1){
         count++;
         list.splice(index, 1);
         index = list.indexOf(target);
      };
      return count;
   };

   const map = [];
   arr.forEach(el => {
      if(!searched.hasOwnProperty(el)){
         map.push([el, countAppearance(arr.slice(), el)]);
      };
   });
   map.sort((a, b) => a[1] - b[1]);

   map.forEach(([num, freq]) => {
      while(freq){
         res.push(num);
         freq--;
      }
   });
   return res;
};
console.log(sortByAppearance(arr));

出力

[1, 2, 12, 4, 4, 5, 5]

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

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

  2. JavaScriptで配列を昇順に変換する

    シーケンスの増加 (0 <=i <=n-2)のようにすべてのi(0ベース)に対してarr [i] <=arr [i + 1]が成り立つ場合、配列を増加として定義します。 問題 最初で唯一の引数として、整数の配列arrを受け取るJavaScript関数を作成する必要があります。 この関数は、配列の最大1つの要素を変更することで、この配列を増加する配列に変換できるかどうかを判断する必要があります。 そうすることができれば、trueを返し、そうでない場合はfalseを返す必要があります。 たとえば、関数への入力が 入力 const arr = [8, 3, 3, 7, 9]; 出力