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