获取JSON next和上一个对象

时间:2014-10-07 04:41:23

标签: jquery json

如何获得下一个(120),前一个(122)对象?目前在第二个对象,141。此外,我控制了JSON格式。

var articleId = 141;

var url = {
    "Article": [
        {
            "Id": "122",
            "Title": "Article #122"
        },
        {
            "Id": "141",
            "Title": "Article #141"
        },
        {
            "Id": "120",
            "Title": "Article #120"
        }
    ]
};

$.each(url.Article, function (i, data) {
    var current = data.Id;

    if (current == articleId)
        console.log(this.Title)

   //next
   //previous
});

4 个答案:

答案 0 :(得分:0)

代码示例中的变量i实际上是您当前所在的url.Article索引。使用此变量,您可以轻松找到下一个和上一个对象。

作为一个例子......

var prev = i > 0 ? url.Article[i - 1] : null;
var next = i < url.Article.length - 1 ? url.Article[i + 1] : null;

答案 1 :(得分:0)

i是指您所在的当前索引。因此,您可以分别使用i+1i-1来引用next和prev索引。喜欢

$.each(url.Article, function (i, data) {
    var current = data.Id;

    if (current == articleId)
        console.log(this.Title);

   //next
   console.log(url.Article[i-1]);
   //previous
   console.log(url.Article[i+1]);
});

答案 2 :(得分:0)

像这样,添加验证以检查上一篇或下一篇文章是否存在。

$.each(url.Article, function (i, data) {
    var currentId = data.Id;

    if (currentId == articleId)
        console.log(data.Title)

    var previous = i > 0 ? url.Article[i-1] : null;
    var next = url.Article.length > i+1 ? url.Article[i+1] : null;
});

答案 3 :(得分:0)

尝试

var p = $.grep(url.Article, function (data, i) {  
      return data.Id == articleId 
             && url.Article.length === 3 
             ? data : null
}, true), prev = p[0], next = p[1]; 

console.log(prev.Id, next.Id)

jsfiddle http://jsfiddle.net/guest271314/eb6zs5mq/