2014-01-07 51 views
0

我所做的是我首先使用jQuery函数$.parseJSON()解析了它们,现在我有2个数组,里面有3个对象。我想要做的是我想同时循环访问两个数组,以便我可以检查两个数组循环中当前对象的Post_ID,如果它们相等或不相等,然后如果我找到那Post_ID不存在那里或有一个不匹配,那么我想做点什么。循环访问数组并检查它们的值

这里是我做了什么:

var posts = <? php echo $posts; ?> ; 
setInterval(function() { 
    $.get("admin/post/get_new_posts.php", { 
     userId: <? php echo User::GetUserID($_SESSION["username"]); ?> 
    }, function (data) { 
     data = $.parseJSON(data); 
     for (var i = 0; i < data.length; i++) { 
      for (var j = 0; j < posts.length; j++) { 
       if (posts[j].Post_ID != data[i].Post_ID) { 
        //do something... 
       } else { 

       } 
      } 
     } 
    }); 
}, 10000); 

posts变量有它的价值,我相信它通过登录他们到控制台。现在发生的情况是,每隔十秒发送一次获取请求,并检查变量对象的Post_ID是否与data变量的Post_ID不相等,然后在那里做一些事情。但事实并非如此。情况总是如此。

是的,这里是我的对象。第一个是posts变量,第二个是data变量。

the posts and data variables view

的我怎么能环通过两个变量或数组,并在同一时间检查属性,而循环的任何想法?

回答

1

你比较postsdata后的每条目。那些最不匹配 - posts[0]将不匹配,data[2]

这听起来像你想看看每个列表(posts[0]data[0]等)

的相应成员在这种情况下,你需要一个循环,而不是两个循环。

// find the longest array's length 
var maxi = Math.max(posts.length, data.length, 0); 

for (var i = 0; i < maxi; ++i) 
{ 
    if (i >= posts.length) 
    { 
    // an entry in data, but not posts 
    } 
    else if (i >= data.length) 
    { 
    // an entry in posts, but not data 
    } 
    else if (data[i].Post_ID != posts[i].Post_ID) 
    { 
    // mismatched IDs 
    } 
    else 
    { 
    // matched IDs 
    } 
} 
0

您正在执行两个循环,这会产生问题。因为它们具有以下含义(我将它们翻译为纯英文): 对于数组'数据'的每个项目,请检查数组'帖子'中与当前项目'数据'不相等的任何项目。这就是为什么它总是“做某事”。

由于两个阵列具有相同的长度,你应该做一个循环是这样的:

for (var i = 0; i < data.length; i++) { 
      if (posts[i].Post_ID != data[i].Post_ID) { 
       //do something... 
      } else { 

      } 
    } 
相关问题