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

JavaScriptで配列値をグループ化する


このような数年と数週間のデータを含むオブジェクトの配列があるとします-

const arr = [
   {year: 2017, week: 45},
   {year: 2017, week: 46},
   {year: 2017, week: 47},
   {year: 2017, week: 48},
   {year: 2017, week: 50},
   {year: 2017, week: 52},
   {year: 2018, week: 1},
   {year: 2018, week: 2},
   {year: 2018, week: 5}
];

そのような配列を1つ取り込むJavaScript関数を作成する必要があります。この関数は、「year」プロパティに共通の値を持つすべてのオブジェクトが個別のオブジェクトにグループ化された新しい配列を返す必要があります。

したがって、上記の配列の出力オブジェクトは次のようになります-

[
   { 2017 : [{
      week: 45,
      week: 46,
      week: 47,
      week: 48,
      week: 50,
      week: 53
   },
   { 2018 : [{
      week: 1,
      week: 2,
      week: 5
   }]
]

このためのコードは-

になります
const arr = [
   {year: 2017, week: 45},
   {year: 2017, week: 46},
   {year: 2017, week: 47},
   {year: 2017, week: 48},
   {year: 2017, week: 50},
   {year: 2017, week: 52},
   {year: 2018, week: 1},
   {year: 2018, week: 2},
   {year: 2018, week: 5}
];
const groupByYear = arr => {
   const res = [];
   const map = {};
   arr.forEach(item => {
      const temp = {};
      if (!map[item.year]) {
         map[item.year] = [];
         temp[item.year] = map[item.year];
         res.push(temp);
      };
      map[item.year].push({ value: item.week });
   });
   return res;
};
console.log(JSON.stringify(groupByYear(arr), undefined, 4));

出力

コンソールの出力-

[
   {
      "2017": [
         {
            "value": 45
         },
         {
            "value": 46
         },
         {
            "value": 47
         },
         {
            "value": 48
         },
         {
            "value": 50
         },
         {
            "value": 52
         }
      ]
   },
   {
      "2018": [
         {
            "value": 1
         },
         {
            "value": 2
         },
         {
            "value": 5
         }
      ]
   }
]

  1. JavaScriptを使用した配列内のネストされたオブジェクト値の合計

    以下は、JavaScriptを使用して配列内のネストされたオブジェクト値を合計するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <st

  2. 複数の値でJavaScript配列の要素を見つける方法は?

    以下は、JavaScript配列の要素を複数の値で検索するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> &nbs