提问人:grabrep gg 提问时间:8/25/2023 最后编辑:grabrep gg 更新时间:8/25/2023 访问量:34
基于年份和月份的 revere 数组对象
revere array object based on year and month
问:
我有下面的数组对象
var dataset = [
{
"data" : "Country",
"title" : "country"
},
{
"data" : "Jan 2023",
"title" : "Jan 2023"
},
{
"data" : "Feb 2023",
"title" : "Feb 2023"
},
{
"data" : "Dec 2022",
"title" : "Dec 2022"
},
]
我想要的是在 2022 年之前保持第一个指数不变,然后是 2023 年,如下所示
var dataset = [
{
"data" : "Country",
"title" : "country"
},
{
"data" : "Dec 2022",
"title" : "Dec 2022"
},
{
"data" : "Jan 2023",
"title" : "Jan 2023"
},
{
"data" : "Feb 2023",
"title" : "Feb 2023"
},
]
因此,例如,如果 2022 年 11 月是 11 月,那么 11 月应该是 2022 年 12 月。原始数组已经排序为最晚的年份,然后是去年。所以意味着原始数组总是有最新的年份月份在前。
我尝试数组排序,但无法存档
var newdataset = dataset.sort((a, b) => {
if (a !== columns[0] && b !== columns[0]) {
return b.data.length - a.data.length
}
})
答:
0赞
Oluwafemi Sule
8/25/2023
#1
比较从每个数据集数据构造的日期值。
let dataset = [{
"data": "Country",
"title": "country"
},
{
"data": "Feb 2023",
"title": "Feb 2023"
},
{
"data": "Dec 2022",
"title": "Dec 2022"
},
{
"data": "Jan 2023",
"title": "Jan 2023"
},
{
"data": "Nov 2022",
"title": "Nov 2022"
},
]
const [heading, ...rest] = dataset;
dataset = [heading, ...rest.sort((a, b) => {
return new Date(a.data) - new Date(b.data);
})];
console.log(dataset);
0赞
grabrep gg
8/25/2023
#2
我能够使用波纹管代码来做到这一点
const sortByMonth = arr => {
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
const getIndexOfMonth = month => months.indexOf(month)
return [ ...arr ].sort((left, right) => {
const [ leftMonth, leftYear ] = left.title.split(' ')
const [ rightMonth, rightYear ] = right.title.split(' ')
if (leftYear !== rightYear) {
return parseInt(leftYear) - parseInt(rightYear)
}
return getIndexOfMonth(leftMonth) - getIndexOfMonth(rightMonth)
})
}
console.log(sortByMonth(dataset))
评论
1赞
Rory McCrossan
8/25/2023
#3
若要按日期对值进行排序,应将它们转换为自定义逻辑中的对象。然后,您可以比当前通过字符串比较更准确地比较它们。Date
sort()
下面是一个完整的工作示例:
const dataset = [{
"data": "Country",
"title": "country"
}, {
"data": "Jan 2023",
"title": "Jan 2023"
}, {
"data": "Feb 2023",
"title": "Feb 2023"
}, {
"data": "Dec 2022",
"title": "Dec 2022"
}]
const sortedDataset = dataset.sort((a, b) => new Date(a.data) - new Date(b.data));
console.log(sortedDataset);
评论
columns