javascript - 将嵌套对象相互排序
问题描述
我很难对嵌套对象进行内部排序。例如,我有嵌套数组对象,如下所示。
[
{
"project_id": "1155091124014397",
"completed": [
{
"task_due_date": "2020-06-01",
},
{
"task_due_date": "2020-20-01",
},
{
"task_due_date": "2020-02-01",
},
],
},
{
"project_id": "1155091124012597",
"completed": [
{
"task_due_date": "2020-22-01",
},
{
"task_due_date": "2020-05-01",
},
{
"task_due_date": "2020-01-01",
},
],
},
]
所以我试图对里面的每个完成的嵌套数组对象进行排序。但不确定如何处理。并尝试了类似下面的东西。
let sorted = array.map(element => {
let nested = _.orderBy(element.completed, 'task_due_date');
return nested
});
return sorted
但没有解决。
预期结果是
[
{
"project_id": "1155091124014397",
"completed": [
{
"task_due_date": "2020-02-01",
},
{
"task_due_date": "2020-06-01",
},
{
"task_due_date": "2020-20-01",
},
],
},
{
"project_id": "1155091124012597",
"completed": [
{
"task_due_date": "2020-01-01",
},
{
"task_due_date": "2020-05-01",
},
{
"task_due_date": "2020-22-01",
},
],
},
]
日期已排序。
解决方案
首先,您需要将日期字符串转换为日期对象,然后您可以根据这些对象进行排序:
const arr = [
{
"project_id": "1155091124014397",
"completed": [
{
"task_due_date": "2020-06-01",
},
{
"task_due_date": "2020-20-01",
},
{
"task_due_date": "2020-02-01",
},
],
},
{
"project_id": "1155091124012597",
"completed": [
{
"task_due_date": "2020-22-01",
},
{
"task_due_date": "2020-05-01",
},
{
"task_due_date": "2020-01-01",
},
],
},
];
const toDate = dateStr => {
const components = dateStr.split('-');
const [year, date, month] = components;
return new Date(`${year}-${month}-${date}`);
};
const sortByDate = (a, b) => {
const aDate = toDate(a['task_due_date']);
const bDate = toDate(b['task_due_date']);
return aDate - bDate;
};
arr.forEach(el => {
el.completed.sort(sortByDate);
});
console.log(arr);
推荐阅读
- java - GIT cli 取自 eclipse 并在 Java 中使用
- python - 从字符串中解析出发城市/目的地城市
- android - retrofit2 rxjava 2 - 出现错误时如何访问响应体
- c++-winrt - VS 在新项目中显示很多错误(E1696、E0020)和警告(C26451、C4754)
- python - Python 字典键错误。如何循环嵌套字典并检查键
- r - system() 是否打开连接?
- android - 在 Flutter 中使用自定义过渡过渡到新子代
- android - 在 Groupie Recycler 视图中,它每 7 行重复一次相同的 firebase 数据库 uid
- git - 我可以 git merge --squash 本地分支以删除敏感信息吗?
- python - 创建一个嵌套字典,将三个 ndarray 中的元素分组