2016-11-22 116 views
2

这里我的数据:lodash _.filter timestamp范围之间的时间戳?

[ 
    { 
    "idi": 0, 
    "ut": 1479679625, 
    "eid": 0, 
    "ide": 0 
    }, 
    { 
    "idi": 1, 
    "ut": 1479679630, 
    "eid": 1, 
    "ide": 0 
    }, 
    { 
    "idi": 2, 
    "ut": 1479679650, 
    "eid": 0, 
    "ide": 1 
    }, 
    { 
    "idi": 3, 
    "ut": 1479679655, 
    "eid": 1, 
    "ide": 1 
    } 
] 

ut是UNIX时间戳,我需要得到2个UT值范围之间的所有对象。 like> = 1479679625 & & < = 1479679655(第一个&最后一个对象之间的所有对象)。我用lodash与lowdb和的NodeJS:

const low = require('lowdb'); 
var _ = require('lodash'); 

var DB = low('pathDB'); 
var TIME_QUERY_START_UNIX = 1479679625; 
var TIME_QUERY_STOP_UNIX = 1479679655; 
var QUERY = _.filter(DB, function(o) { return TIME_QUERY_START_UNIX <= o.ut && o.ut <= TIME_QUERY_STOP_UNIX; }); 

,但它引发的不确定

我如何做一个正确的命令的

无法读取属性 'UT'?

感谢

+0

可以粘贴DB值这里 –

+0

你必须使用内置的lowdb lodash查询机制:'db.get方法(“帖子').filter(o => TIME_QUERY_START_UNIX <= o.ut && o.ut <= TIME_QUERY_STOP_UNIX).value();' – Tholle

+0

@Gauravjoshi:DB的值是OK,我在控制台上打印并显示正确的数据 –

回答

2
_.filter(data, function(item) { 
    return _.inRange(
     item.ut, 
     TIME_QUERY_START_UNIX, 
     TIME_QUERY_STOP_UNIX + 1 
    ); 
}) 

检查item.eid = 0

_.filter(data, function(item) { 
    return _.every([ 
     _.inRange(
      item.ut, 
      TIME_QUERY_START_UNIX, 
      TIME_QUERY_STOP_UNIX + 1 
     ), 
     item.eid === 0 
    ]); 
}) 
+0

嗨,它返回undefined –

+0

@ user2148971显示您的数据 – stasovlas

+0

开始:1477958400站:1479749400 LodashWrapper { __wrapped__: [{IDI:0,UT:1479679625,EID:0,IDE:0}, {idi:1,ut:1479679630,eid:1,ide:0}, {idi:2,ut:1479679650,eid:0,ide:1}, {idi:3,ut:1479679655,eid: 1,ide:1}, {idi:4,ut:1479679667,eid:2,ide:0}, {idi:5,ut:1479679674,eid:0,ide:2}, {idi:6 ,ut:1479679692,eid:1,ide:2}, {idi:7,ut:1479679886,eid:0,ide:3}, {idi:8,ut:1479679895,eid:0,ide:4 }, {idi:9,ut:1479731563,eid:0,ide:5},...... ], –