【发布时间】:2018-08-22 16:05:23
【问题描述】:
我正在使用 React 和 moment.js 构建新闻提要。使用.map 我正在渲染带有标题和内容的项目。我想检查一个项目是否与另一个项目在同一年和同一月发布。如果是这种情况,我想隐藏第二个项目的标题。
目前我的代码呈现这个:
2018 年 3 月
新闻一
2018 年 3 月
新闻二
2017 年 9 月
新闻三
2017 年 6 月
新闻四
由于项目 1 和 2 共享相同的月份和年份,我想改为这样呈现:
2018 年 3 月
新闻一
新闻二
2017 年 9 月
新闻三
2017 年 6 月
新闻四
Based on this answer我试图找到具有重复类名的节点,但我不在那里:
let monthNodes = [...document.querySelectorAll('.months')];
let months = []
monthNodes.map(month => {
months.push(month.className)
})
const count = names =>
names.reduce((a, b) =>
Object.assign(a, {[b]: (a[b] || 0) + 1}), {})
const duplicates = dict =>
Object.keys(dict).filter((a) => dict[a] > 1)
console.log(count(months)) // {March_2018: 2, December_2017: 1, November_2017: 1}
console.log(duplicates(count(months))) // [ 'March_2018' ]
也许我用错了方法,首先使用 .map 是个坏主意?
更新
感谢所有出色的答案,很难在它们之间做出选择,因为它们都运行良好。我不得不接受 David Ibl 的回答,因为他首先提供了一个工作示例。
【问题讨论】:
标签: javascript arrays reactjs time duplicates