2016-09-15 55 views
-1

除了偶尔的jQuery选择器和元素修改之外,我对javascript的评价也不是很高。对于我遇到的问题,我需要按日期过滤出一个JavaScript对象。我有一个看起来像这样的结构:如何过滤两个日期之间的对象数组?

Object { version: "3.1.1", released_on: "2016-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 } 

我想找到所有的对象从10岁所以"2016-08-21T00:00:00.000Z"之间"2010-08-21T00:00:00.000Z"我遇到的问题是,released_on:领域是一个字符串不是日期。我需要创建一个new Date()对象将其转换为字符串,然后使用.filter或者我会做相反的事情,将字符串转换为日期然后过滤。有没有人尝试过这样的事情?

+1

'新的Date()。的getTime()'会给你一个数字,将是更容易 –

+0

工作把这个浏览器控制台'的console.log(新的日期(“2016 -08-21T00:00:00.000Z“))''会看到你的日期字符串是完全有效的。甚至可以直接在日期对象上使用比较运算符 – charlietfl

回答

1

您可能会这样做;

var data = [{ version: "3.1.1", released_on: "2016-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, 
 
      { version: "3.1.1", released_on: "2011-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, 
 
      { version: "3.1.1", released_on: "2009-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, 
 
      { version: "3.1.1", released_on: "2006-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, 
 
      { version: "3.1.1", released_on: "2013-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, 
 
      { version: "3.1.1", released_on: "2017-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, 
 
      { version: "3.1.1", released_on: "2015-08-21T00:00:00.000Z", high_vulns: 15, medium_vulns: 10, low_vulns: 5 }, 
 
      ], 
 
     ed = new Date("2016-08-21T00:00:00.000Z").getTime(), 
 
     sd = new Date("2010-08-21T00:00:00.000Z").getTime(), 
 
    result = data.filter(d => {var time = new Date(d.released_on).getTime(); 
 
          return (sd < time && time < ed); 
 
          }); 
 
console.log(result);

相关问题