我一直试图解决这个问题一段时间没有成功。我有2个阵列:
var dates = [
new Date(2014, 4, 11, 10, 10, 0).getTime(),
new Date(2012, 4, 10, 8, 20, 0).getTime(),
new Date(2013, 4, 9, 7, 20, 0).getTime(),
new Date(2010, 4, 7, 12, 59, 0).getTime()
];
var newsItems = ["NewsItem1","NewsItem2","NewsItem3","NewsItem4"];
我正在使用var desc = dates.sort(function(a,b){return b-a});
功能
然而,为了对日期数组进行排序,我还没有能够弄清楚如何重新排列newsItems数组以使其与日期数组对齐。我尝试了这个但它似乎不起作用:
var datesDuplicate = [
new Date(2014, 4, 11, 10, 10, 0).getTime(),
new Date(2012, 4, 10, 8, 20, 0).getTime(),
new Date(2013, 4, 9, 7, 20, 0).getTime(),
new Date(2010, 4, 7, 12, 59, 0).getTime()
];
for(var i = 0; i < arrayLength; i++){
for(var j = 0; j < arrayLength; j++){
if(dates[i] == datesDuplicate[j]){
document.getElementById(getElement(i)).innerHTML = newsItems[j];
break;
}
}
}
非常感谢任何帮助。
答案 0 :(得分:3)
如果您希望新闻项和日期相互关联,则它们应该属于同一个对象。
var items = [
{ date: new Date(2014, 4, 11, 10, 10, 0).getTime(), label: "NewsItem1" },
{ date: new Date(2012, 4, 10, 8, 20, 0).getTime(), label: "NewsItem2" },
etc...
];
然后您可以将其排序为
var desc = items.sort(function(a,b){return b.date-a.date});
答案 1 :(得分:2)
尝试这样的事情
var news = [
{date: new Date(2014, 4, 11, 10, 10, 0).getTime(), item: "NewsItem1" },
{date: new Date(2012, 4, 10, 8, 20, 0).getTime(), item: "..." },
{date: new Date(2013, 4, 9, 7, 20, 0).getTime(), item: "..." },
{...}
];
您也需要调整排序功能。如果必须从两个数组转换,请尝试使用zip
将它们组合到上述结构中。
答案 2 :(得分:0)
通过将日期与newsItems配对,可以改善您的抽象:
var datePairs =
[
["NewsItem1", new Date(2014, 4, 11, 10, 10, 0).getTime()],
["NewsItem2", new Date(2012, 4, 10, 8, 20, 0).getTime()],
["NewsItem3", new Date(2013, 4, 9, 7, 20, 0).getTime()],
];
var desc = datePairs.sort(function(a,b){return b[1]-a[1]}); //sort by date (the second element of each element)
答案 3 :(得分:0)
如果你对数据的结构没有任何控制,并且被2个阵列(密集且长度相同)所困扰,那么使用ECMA5方法就可以对它们进行排序。
的Javascript
var dates = [
new Date(2014, 4, 11, 10, 10, 0).getTime(),
new Date(2012, 4, 10, 8, 20, 0).getTime(),
new Date(2013, 4, 9, 7, 20, 0).getTime(),
new Date(2010, 4, 7, 12, 59, 0).getTime()
],
newsItems = ["NewsItem1", "NewsItem2", "NewsItem3", "NewsItem4"];
dates.map((function (date, index) {
return {
date: date,
item: this[index]
};
}), newsItems).sort(function (a, b) {
return b.date - a.date;
}).forEach(function (record, index) {
dates[index] = record.date;
newsItems[index] = record.item
});
console.log(dates, newsItems);
输出
[1399795800000, 1368076800000, 1336630800000, 1273229940000] ["NewsItem1", "NewsItem3", "NewsItem2", "NewsItem4"]
上