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

JavaScriptで数値の配列をセットにソートするためのアルゴリズム


次のようなオブジェクトを含むオブジェクトの配列があるとします-

const arr = [
   {'item1': 144},
   {'item2': 0},
   {'item3': 366},
   {'item4': 15},
   {'item6': 366},
   {'item7': 19},
   {'item8': 211},
   {'item9': 121}
];

このような配列を1つ取り込んで、オブジェクトを4つのグループ(つまり-

)にクラスター化するJavaScript関数を作成する必要があります。
'XL', 'L', 'M', 'S'

数値は、相対的な大きさに基づいてこれらのグループに分散する必要があります。

このためのコードは-

になります
const arr = [
   {'item1': 144},
   {'item2': 0},
   {'item3': 366},
   {'item4': 15},
   {'item6': 366},
   {'item7': 19},
   {'item8': 211},
   {'item9': 121}
];
const compareWithRange = (rangeArr, num) => {
   for(let i = 0; i < rangeArr.length; i++){
      if(num <= rangeArr[i] && num > rangeArr[i + 1]){
         return i;
      };
   };
   return rangeArr.length - 1;
}
const groupBySize = (arr = []) => {
   const mapping = arr => arr.map(el => el[Object.keys(el)[0]]);
   const max = Math.max(...mapping(arr));
   const range = {
      'XL': max,
      'L': (max * 3) / 4,
      'M': (max / 2),
      'S': (max / 4)
   };
   const legend = ['XL', 'L', 'M', 'S'];
   const res = {};
   arr.forEach(el => {
      const num = el[Object.keys(el)[0]];
      const index = compareWithRange(Object.keys(range).map(key => range[key]), num);
      const size = legend[index];
      if(res.hasOwnProperty(size)){
         res[size].push(Object.keys(el));
      }
      else{
         res[size] = [Object.keys(el)];
      }
   });
   return res;
};
console.log(groupBySize(arr));

出力

そして、コンソールの出力は-

になります
{
   M: [ [ 'item1' ], [ 'item9' ] ],
   S: [ [ 'item2' ], [ 'item4' ], [ 'item7' ] ],
   XL: [ [ 'item3' ], [ 'item6' ] ],
   L: [ [ 'item8' ] ]
}

  1. JavaScriptで数値の配列の分散を計算する

    問題 昇順で並べ替えられた数値の配列を受け取るJavaScript関数を作成する必要があります。 この関数は、数値の配列の分散を計算する必要があります。一連の数値の分散は、それらの平均に基づいて計算されます。 $ Mean(M)=(\ sum_ {i =0} ^ {n-1} arr [i])$ / n そして分散(V)=$(\ sum_ {i =0} ^ {n-1}(arr [i] --M)^ 2)$ / n 例 以下はコードです- const arr = [4, 6, 7, 8, 9, 10, 10]; const findVariance = (arr = []) =>

  2. JavaScriptを使用して配列の差の合計を並べ替えて見つける

    問題 整数の配列を受け取るJavaScript関数を作成する必要があります。この関数は、配列内の連続するペア間の差を降順で合計する必要があります。 例-配列が-の場合 [6, 2, 15] その場合、出力は-になります。 (15 - 6) + (6 - 2) = 13 例 以下はコードです- const arr = [6, 2, 15]; const sumDifference = (arr = []) => {    const descArr = arr.sort((a, b) => b - a);    if (descArr.