使用JLinq按日期过滤JSON

时间:2014-02-14 01:12:49

标签: javascript json

我使用JLinq来过滤JSON数据。按日期过滤对我不起作用。我试过调用方法但是一样。

这是我的代码段。

    //This works
    jlinq.from(myData)
                 .select(function(rec) {
                      return {
                           title:rec.title,
                           pubDate:rec.pubDate
                          }
                      });

这是上述代码返回的数据。

    // And returned this data
    myData = [
        {pubDate: "2012-06-19T10:42:59.000Z",
        title: "How caching matters in JS?" },
        {pubDate: "2012-06-18T14:39:25.000Z",
        title: "Globbing in scripting languages"}
        {pubDate: "2012-06-14T17:50:22.000Z",
        title: "Inspecting Objects in Scripting"}
    ]

当我尝试按日期过滤时,它无法正常工作。大于或小于。

EDITED

    //Filter by pubDate
    jlinq.from(myData)
               .greater(new Date("pubDate"), new Date("2010-02-13T19:03:17.000Z"))
               .select();

此问题特定于比较日期值时。它返回空数组。

    //But Returns empty Array
    //[]

1 个答案:

答案 0 :(得分:1)

我明白了。我认为问题是库假设值是字符串比较长度否则只比较 value1>值2

我改变了这段代码:

    //is the value greater than the argument
    { name:"greater", type:framework.command.query, 
        method:function(value) {
            return this.compare({
                array:function() { return this.value.length > value; },
                string:function() { return this.value.length > value; },
                other:function() { return this.value > value; }
            });
        }},

对此:通过创建另一个名为greaterDate的过滤器,并将该字符串转换为'Date()'

    //is the value greaterDate than the argument
    { name:"greaterDate", type:framework.command.query, 
        method:function(value) {
            return this.compare({
                array:function() { return this.value.length > value; },
                string:function() { return new Date(this.value) > new Date(value); },
                other:function() {  return new Date(this.value) > new Date(value); }
            });
        }},

也许有更好的方法,但我知道了解决它。