我有以下一组字符串数组,我需要根据日期重新排列最终输出,这些日期需要最早排序到最早
[
"2015-08, xyz, 4",
"2016-03, abc, 5",
"2015-12, ter, 76",
"2015-12, rep, 14"
]
最终输出需要看起来像
[
"2016-03, abc, 5",
"2015-12, ter, 76, rep, 14",
"2015-08, xyz, 4"
]
我该怎么做?
答案 0 :(得分:2)
不是一个完整的解决方案,但它会为您提供实施自己的基础。
对数据进行排序:
我们的想法是你定义一个函数(在我们的例子中为SortByDate
),其中包含如何比较两个数组元素的逻辑,然后使用参数new函数调用默认的sort
函数你定义了。
data = [
"2015-08, xyz, 4",
"2016-03, abc, 5",
"2015-12, ter, 76",
"2015-12, rep, 14"
];
//This is the logic
function SortByDate(a, b){
dateA = a.split(",")[0]; // e.g. a="2015-08, xyz, 4" dateA="2015-08"
yearA = dateA.split("-")[0]; // e.g. "2015"
monthA = dateA.split("-")[1]; // e.g. "08"
dateB = b.split(",")[0];
yearB = dateB.split("-")[0];
monthB = dateB.split("-")[1];
if (parseInt(yearA) < parseInt(yearB)) return -1;
if (parseInt(yearA) > parseInt(yearB)) return 1;
if (parseInt(yearA) == parseInt(yearB)) {
if (parseInt(monthA) < parseInt(monthB)) return -1;
if (parseInt(monthA) > parseInt(monthB)) return 1;
if (parseInt(monthA) == parseInt(monthB)) return 0;
}
}
data.sort(SortByDate);
console.log(data);
后续步骤:
最后一部分可能很棘手,因为你的数组会丢失一些元素,它的大小会减少。您可能需要查看此内容:Looping through array and removing items。