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