javascript - 按月和年对数组进行排序
问题描述
我需要帮助按月和年对数组进行排序以分别显示在图表上。
Array1: ['Mar19','Apr18','Jun18','Jul18','May18','Jan19'....];
Desired Output : [....'Apr18','May18','Jun18','Jul18','Jan19','Mar19'];
根据上面的数组,我还有另一个数组,每个月的值分别
Array2: ['Mar19_value','Apr18_value','Jun18_value','Jul18_value','May18_value'
,'Jan19_value'....];
Array2: ['55','2','3','0','21','132'....]; //real values
当monthyear
数组排序时,我希望这个数组中的数据根据位置移动到一个新的monthyear
位置。像这样:
Desired Array1: [....'Apr18','May18','Jun18','Jul18','Jan19','Mar19'];
Desired Array2: [....'Apr18_value','May18_value','Jun18_value','Jul18_value','Jan19_value','Mar19_value'];
所以我可以稍后像这样选择数据:
var label = array[4];
var value = array2[4];
如何实现?
解决方案
您需要将字符串更改为new Date(dateString)
格式
new Date(Month Date Year)
更新了两个数组的正则表达式模式
https://regex101.com/r/h1cm1z/2/
根据第一个数组排序索引更新了对第二个数组进行排序
var arr1 = ['Mar19','Apr18','Jun18','Jul18','May18','Jan19'];
var arr2 =['55','2','3','0','21','132'];
function datesort(arr){
return arr.concat().sort((a,b)=>{
a = a.replace(/(\d+)(.*)/g,' 1 $1'); // Month 1 YEAR
b = b.replace(/(\d+)(.*)/g,' 1 $1'); // Month 1 YEAR
return new Date(a) - new Date(b)
})
}
var after_arr1 =new datesort(arr1);
var after_arr2 = arr1.reduce(function(a,b,c){
var ind = after_arr1.indexOf(b);
a[ind] = arr2[c]
return a
},[]);
console.log(after_arr1.join(','));
console.log(after_arr2.join(','))
推荐阅读
- javascript - 即使设置了参数,URL 查询参数也会返回 null
- haskell - Haskell列表列表的偶数和的乘积
- c# - 将数据添加到 ICollection
- django-rest-framework - DRF:你应该手动处理异常吗?
- tkinter - 如何在 tkinter 中更新按钮的颜色
- printing - Hoin POS-58 热敏打印机打印效果不佳
- pine-script - 有没有办法将新策略应用于交易视图中的顶级筛选资产?
- php - Laravel 验证 - 确保 Json 列中不存在值
- python - 为什么我在 tkinter 画布中的内容没有滚动?即使我已经将滚动条链接到它?
- typescript - 传播参数中的打字稿函数通用参数