因此请考虑以下数据:
{
post_views:[
{
id:1,
post_id:5,
ip_address:"xxx",
created_at:"2016-08-08T22:22:45+0000",
updated_at:"2016-08-08T22:22:45+0000"
},
{
id:2,
post_id:5,
ip_address:"yyy",
created_at:"2016-08-08T22:23:00+0000",
updated_at:"2016-08-08T22:23:00+0000"
},
...
]
}
如何获得所有匹配的元素:2016-08-08 ??
你尝试过什么?
Lodashes,过滤器:
let datesThatMatch = filter(this.state.data.post_views, (views) => {
return moment(views.created_at).format('MMMM Do YYYY') === moment(views.created_at).format('MMMM Do YYYY')
});
console.log(datesThatMatch);
我不在乎它们是在一天中的什么时间创建的,只要它们在比赛时创建即可。
帮忙?
更新
我刚刚意识到我也搞错了,因为虽然我只向您展示了一部分数据,但数组中有数百个这些对象(如果不是数千个),目标是说,好吧,有2016-08-08 有 16 个匹配项,x 日期有 50 个匹配项,y 日期有 14 个匹配项,这增加了此过滤器的复杂性。
最佳答案
根据您的更新,我认为 groupBy 是更好的选择:
var data = {
post_views:[
{
id:1,
post_id:5,
ip_address:"xxx",
created_at:"2016-08-08T22:22:45+0000",
updated_at:"2016-08-08T22:22:45+0000"
},
{
id:2,
post_id:5,
ip_address:"yyy",
created_at:"2016-08-08T22:23:00+0000",
updated_at:"2016-08-08T22:23:00+0000"
},
{
id:3,
post_id:5,
ip_address:"zzz",
created_at:"2016-08-12T20:15:00+0000",
updated_at:"2016-08-12T21:20:00+0000"
},
]
}
let groupedDatesThatMatch = _.groupBy(data.post_views, function(views) {
return moment(views.created_at).format('MMMM Do YYYY')
});
console.log(groupedDatesThatMatch);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.14.2/lodash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
你从另一端得到一个数组对象
关于javascript - 给我数组中具有相同日期的所有元素,JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38861610/