lodash _.filter时间戳范围之间的时间戳?

时间:2016-11-22 07:31:58

标签: node.js lodash

这是我的数据:

[
  {
    "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值范围之间的所有对象。喜欢> = 1479679625&& < = 1479679655(第一个和最后一个对象之间的所有对象)。我使用带有lowdb和nodejs的lodash:

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'

我如何做正确的命令?

由于

1 个答案:

答案 0 :(得分:3)

_.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
    ]);
})