javascript - 如何在js中创建按日期分组的json?

标签 javascript lodash

我有一个按日期排序的对象数组:

const alerts = [{ 
    id: 1, date: '2018-10-31T23:18:31.000Z', name: 'Joke', title: 'this is the first 1' 
}, { 
    id: 2, date: '2018-10-30T23:18:31.000Z', name: 'Mark', title: 'this is the second one' 
}]

我正在尝试按日期对警报进行“分组”,因此尝试创建具有日期标题的“datesections”,结果应该类似于:

const sections = [{
   date: '2018-10-31T23:18:31.000Z',
   heading: 'today',
   alerts: [{ id: 1, date: '2018-10-31T23:18:31.000Z', name: 'Joke', 
   title: 'this is the first one' }]
}, {
   date: '2018-10-30T23:18:31.000Z',
   heading: 'Yesterday',
   alerts: [{ id: 2, date: '2018-05-30T23:18:31.000Z', name: 'Mark', 
   title: 'this is the second one' }]
}]

我尝试了一些方法,但不知道如何在警报属性中获取具有相同日期的警报:

const sections2=alerts.map(a =>
    ({
        date: a.date,
        heading:'today new',
        alerts:alerts
    })
)

最佳答案

const alerts = [
    { id: 1, date: '2018-10-31T23:18:31.000Z', name: 'Joke', title: 'this is the first 1' },
    { id: 2, date: '2018-05-30T23:18:31.000Z', name: 'Mark', title: 'this is the second one' }
]

const grouping = _.groupBy(alerts, element => element.date.substring(0, 10))
const sections = _.map(grouping, (items, date) => ({
  date: date,
  alerts: items
}));

console.log(sections);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

无法帮助您设置标题 - 如果它既不是“今天”也不是“昨天”怎么办?

关于javascript - 如何在js中创建按日期分组的json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53082318/

相关文章:

javascript - 有没有更简洁的方法来使用 lodash 从数组中删除条目?

javascript - Lodash .clone 和 .cloneDeep 行为

javascript - 一旦选择一个复选框,使用 html.checkboxfor 自动禁用其他复选框

javascript - 我如何解决集中听众的个人 promise ?

javascript - Array sort() 在分配给另一个数组后对实际数组列表进行排序

javascript - 生成假邮政编码

javascript - Node js 如何解析大型 JSONL 数据

javascript - chop/增加 div 中的字体大小以使其适合

javascript - 按日期 react 排序

javascript - 如果属性存在,是否有一个函数仅在目标上分配属性?