我需要在外部json文件中根据制作日期,任何想法订购一堆文章?
我已经通过AJAX显示数据并限制为6个结果,但我真的很难通过日期对其进行排序。日期位于JSON文件中的字符串
中JSON:
[
{
"id": "5537a23050b2c722f390ab60",
"thumbImage": "http://lorempixel.com/175/115",
"title": "reprehenderit nisi occaecat magna eiusmod officia qui do est culpa",
"author": "Melton Myers",
"description": "sint aliqua in anim nulla Lorem aute voluptate veniam anim aliquip laborum sit voluptate amet proident est incididunt aute amet sit est elit ad cillum occaecat velit esse id quis velit deserunt esse occaecat dolore elit deserunt quis cillum cupidatat enim consectetur consectetur proident",
"url": "http://fakeurl.com",
"date": "26-01-2015",
"tags": [
"eu",
"velit",
"mollit"
]
}
]
jquery的:
// getting JSON data from js/article_data.json
$.ajax({
url: 'js/article_data.json',
dataType: 'json',
type: 'get',
cashe: true,
success: function(data) {
//Making so that only 6 results are show
$(data).slice(0, 6).each(function(index, value) {
//setting varibles to data in article_data.json
var clear = "<div class='clear'></div>";
var img = "<a href='" + value.url + "'>" + "<img src= " + value.thumbImage + "/></a>";
var title = "<a class='title' href='" + value.url + "'>" + value.title + "</a>";
var description = "<p>" + value.description + "</p>";
var date = "<small class='date'>" + value.date + "</small>";
var tags = "<small class='tags'> Tags:<br>" + value.tags + "</small><hr>";
var closeLink = "</a>";
// putting the JSON data into the HTML (inside the div with an id of news)
$(clear).appendTo('#news');
$(img).appendTo('#news');
$(title).appendTo('#news');
$(date).appendTo('#news');
$(description).appendTo('#news');
$(tags).appendTo('#news');
$(closeLink).appendTo('#news');
});
//Checking to see if there is data in the JSON file and throwing up an error sign if there is.
if (data.length === 0) {
var error = "<div class='error'><h1>Opps! No results!</h1></div>";
$(error).appendTo('#news');
}
}
});
答案 0 :(得分:1)
您在json数组中的日期格式是DD-MM-YYYY格式,您需要格式化为YYYY-MM-DD格式(ISO)。然后,您可以将此日期转换为javascript Date对象,然后您可以将其用于比较,如下所示:
new Date(a.date.split("-").reverse());
完整代码:
$(document).ready(function() {
$.ajax({
url: "/echo/json/", // path for json
data: data,
type: "POST",
success: function(response) {
data = response.slice(0, 6).sort(function(a, b) {
A = new Date(a.date.split("-").reverse());
B = new Date(b.date.split("-").reverse());
return A < B;
});
$.each(data, function(index, value) {
itemHtml = "<div class='clear'></div><a href='" + value.url + "'><img src= '" + value.thumbImage + "'/></a><a class='title' href='" + value.url + "'>" + value.title + "</a> <p>" + value.description + "</p><small class='date'>" + value.date + "</small> <small class='tags'> Tags:<br>" + value.tags.join() + "</small><hr> </a>";
$("#news").append(itemHtml);
});
}
});
});
以下是工作演示https://jsfiddle.net/cqx4dhL5/3/
如果您需要任何解释,请告诉我
答案 1 :(得分:-1)
您可以尝试这样的事情:
array.sort(function(a,b){
if(a.date<b.date){
return -1
}
if(a.date>b.date){
return 1
}
return 0
})
答案 2 :(得分:-1)
您可以在执行每项操作之前使用sort。像这样。
var a = [
{
"id": "asdf",
"date": "26-01-2015",
"tags": [
"eu",
"velit",
"mollit"
]
},
{
"id": "qqqq",
"date": "20-01-2015",
"tags": [
"eu",
"velit",
"mollit"
]
},
{
"id": "ttttt",
"date": "26-01-2016",
"tags": [
"eu",
"velit",
"mollit"
]
}
];
var b = a.sort(function(a, b){return a.date < b.date;});
console.log(b);
&#13;
可以在sort方法的比较函数中更改顺序。
希望这有帮助。