javascript - 给我数组中具有相同日期的所有元素,JS

标签 javascript lodash

因此请考虑以下数据:

{  
   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/

相关文章:

javascript - 按数组内的嵌套对象属性排序

javascript - 在数组中查找重复对象并标记这些 [Javascript lodash]

javascript - Object.isEmpty 与 .isEmpty() 与 _.isEmpty(Object) javascript、lodash、下划线

javascript - 使用 lodash 或 underscore.js 操作 javascript 中的对象数组

javascript - 如何设置 eslint 以仅在单文件 vue 组件中将 lodash 检测为全局?

javascript - 标记不会出现在 GeoChart 上,但 map 显示得很好

javascript - JSON 参数大小限制

javascript - 直接链接时 AngularJS 路由不起作用 - 使用 html5 模式和 Firebase 重写

javascript - 使用 javascript 进行 PHP 和 HTML 表搜索

javascript - 在空格或 "/"处或在 Javascript 中一定数量的字符后的最大字符后分割字符串