複数のブログから記事一覧をjson形式で取得して、マージ後に日付でソートして表示するという実装をする機会があったので、実装方法をメモ。
サンプルコード
以下の2つのjsonを使用します。
data1.json
{
"article":[
{
"title":"data1の記事A",
"date":"2019/11/1"
},
{
"title":"data1の記事B",
"date":"2019/10/25"
},
{
"title":"data1の記事C",
"date":"2019/10/12"
}
]
}
data2.json
{
"article":[
{
"title":"data2の記事A",
"date":"2019/10/28"
},
{
"title":"data2の記事B",
"date":"2019/10/8"
},
{
"title":"data2の記事C",
"date":"2019/9/30"
}
]
}
HTMLに出力するエリアを用意します。
<div id="sample"></div>
jQueryで2つのjsonを取得して、マージ・ソートを行った後に出力します。
$(function() {
// json取得
var getJson = $.when (
$.getJSON('data1.json?' + parseInt((new Date)/1000), function(data1) {}),
$.getJSON('data2.json?' + parseInt((new Date)/1000), function(data2) {})
);
// json取得後
getJson.done(function(data1, data2) {
// jsonのマージ
var data = data1[0]['article'].concat(data2[0]['article']);
// 日付でソート
data.sort(function(a, b) {
if (new Date(a.date) > new Date(b.date)) {
return -1;
}
if (new Date(a.date) < new Date(b.date)) {
return 1;
}
return 0;
});
// 挿入する要素を作成
var ins = '<ul>';
for (var i = 0; i < data.length; i++) {
ins += '<li>';
ins += '<span class="date">' + data[i].date + '</span>';
ins += '<span class="title">' + data[i].title + '</span>';
ins += '</li>';
}
ins += '</ul>';
$('#sample').append(ins);
});
});
コメントが承認されるまで時間がかかります。