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

JSON配列の日付ベースのJavaScriptをマージする


次のオブジェクトの配列があるとします-

const arr = [
   {
      "date" : "2010-01-01",
      "price" : 30
   },
   {
      "date" : "2010-02-01",
      "price" : 40
   },
   {
      "date" : "2010-03-01",
      "price" : 50
   },
   {
      "date" : "2010-01-01",
      "price2" : 45
   },
   {
      "date" : "2010-05-01",
      "price2" : 40
   },
   {
      "date" : "2010-10-01",
      "price2" : 50
   }
];

そのような配列を1つ取り込むJavaScript関数を作成する必要があります。次に、関数はオブジェクトの「日付」プロパティに基づいてオブジェクトをマージする必要があります。

const arr = [
   {
      "date" : "2010-01-01", "price" : 30
   },
   {
      "date" : "2010-02-01",
      "price" : 40
   },
   {
      "date" : "2010-03-01",
      "price" : 50
   },
   {
      "date" : "2010-01-01",
      "price2" : 45
   }, {
         "date" : "2010-05-01",
         "price2" : 40
   },
   {
      "date" : "2010-10-01",
      "price2" : 50
   }
];
const mergeArray = (arr = []) => {
   const data = arr.slice();
   data.sort((a, b) => new Date(a.date) - new Date(b.date))
   const res = []
   data.forEach(el => {
      if(!this[el.date]) {
         this[el.date] = {
            date: el.date,
            price: null,
            price2: null
         }
         res.push(this[el.date])
      }
      this[el.date] = Object.assign(this[el.date], el)
   });
   return res;
}
console.log(JSON.stringify(mergeArray(arr), undefined, 4));

出力

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

になります
[
   {
      "date": "2010-01-01",
      "price": 30,
      "price2": 45
   },
   {
      "date": "2010-02-01",
      "price": 40,
      "price2": null
   },
   {
      "date": "2010-03-01",
      "price": 50,
      "price2": null
   },
   {
      "date": "2010-05-01",
      "price": null,
      "price2": 40
   },
   {
      "date": "2010-10-01",
      "price": null,
      "price2": 50
   }
]

  1. Javascriptでのマージソートとクイックソート

    マージソートは、分割統治法に基づくソート手法です。最悪の場合の時間計算量はΟ(n log n)です。ただし、このアルゴリズムは余分なO(n)メモリを必要とするため、スペースの面で追加のコストが発生します。 次に、このアルゴリズムをどのように実装するかを見てみましょう。 mergeSortとmergeの2つの関数を作成します。 マージ −この関数は2つの引数を取ります。これらは、2つの部分配列であり、要素を正しい順序で挿入することにより、1つに連結されます。 マージソート −この関数は、配列の左半分と右半分でmergeSortを再帰的に呼び出し、mergeを使用してこれらの配列部分を結合し

  2. JavaScript配列をJSONに変換する

    JavaScriptで配列をJSONに変換するためのコードは、次のとおりです- 例 <!DOCTYPE html> <html> <head> <style>    body {       font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;    } </style> </head> <body> <h1>Converting an ar