循环遍历 JSON 文件,按日期排序(自定义字段)并显示最多 4 个项目



嗨,我尝试创建一个函数,以便我可以遍历包含 100 个项目的 json(WordPress json API)文件。我只想显示 4 个,我只想显示今天的 4 个项目。因此,该函数必须检查今天的日期,并循环搜索日历项目的 100 个项目 (mbwpc-start),并以今天的功能形式显示最接近的 4 个项目。

我希望让我自己清楚。

JSON 文件:

http://www.wilhelminaschool.eu/api/get_recent_posts/?count=100&post_type=mbwpc_event

我现在拥有的功能,但这不起作用:

function showAgenda(){

        var wpAPI =  'http://www.wilhelminaschool.eu/api/get_recent_posts/?count=150&post_type=mbwpc_event';
          $.getJSON(wpAPI, function(result) {
              var html = [];
              var count = 0;
              $.each( result.posts, function( i, item ) {
                var date = new Date(item["custom_fields"]["mbwpc-start"]*1000);
                if(item["custom_fields"]["mbwpc-start"]*1000 > Math.round((new Date()).getTime() / 1000))
                {         
                    var html = '<li class="span12"><div class="thumbnail"><h4>' + item.title + '</h4><p>' + item.content.replace(/</?[^>]+>/gi, '') + '</p>Datum: ' + date.toLocaleDateString() + '</div></li>';
                    $( ".left>.thumbnails" ).append(html);
                } // end if time from today
                // show max 4 items
                if (count == 3) {return false;}
                count++;
               }); // end each
           }); // end getjson
        } // end function

您的第一个任务是对数组进行排序。 您可以将自定义比较函数传递给 sort() 命令,以按您喜欢的任何条件对数组进行排序。 该函数必须返回一个整数:零表示两个值相等,正结果表示应首先对左参数进行排序,负值表示应首先对右参数进行排序。 在这种情况下,我们将mbwpc-start字段解析为 int,然后减去这两个值。

// first, you must sort your items by the desired criteria, 
// mbwpc-start descending
result.posts.sort( function(left,right) {
    return parseInt(right["custom_fields"]["mbwpc-start"]) - parseInt(left["custom_fields"]["mbwpc-start"]);
});

下一个问题是您的日期比较。 您正在正确创建日期对象,但有一种更简单的方法来比较它们。 JavaScript Date 对象有一个方便的函数toDateString()该函数将日期对象格式化为日期。 我们可以使用它来检测 mbwpc 开始日期是否与今天的日期相同。

var today = new Date();
today = today.toDateString(); // "Thu Dec 19 2013"

现在应该很容易循环浏览帖子列表,寻找今天的项目,并在我们达到限制时停止。

var itemCount = 0;
$.each(result.posts, function(i, item) {
    var postDate = new Date(item["custom_fields"]["mbwpc-start"]*1000);
    if ( postDate.toDateString() == today ) {
        // build your HTML and add it to your document
        // ...
        // Count, and break the loop if necessary
        if (++itemCount >= 4)
            return false;   // break the loop
    }
});

相关内容

  • 没有找到相关文章

最新更新