Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环遍历数组并检查其值_Javascript_Php_Jquery_Arrays_Json - Fatal编程技术网

Javascript 循环遍历数组并检查其值

Javascript 循环遍历数组并检查其值,javascript,php,jquery,arrays,json,Javascript,Php,Jquery,Arrays,Json,我首先用jQuery函数,$.parseJSON()解析了它们,现在我有了2个数组,其中有3个对象。我想做的是,我想同时在两个数组上循环,这样我就可以检查两个数组循环中当前对象的Post\u IDs,如果它们相等或不相等,然后如果我发现Post\u ID已经不存在或者不匹配,那么我想做点什么 以下是我所做的: var posts = <? php echo $posts; ?> ; setInterval(function () { $.get("admin/post/get

我首先用jQuery函数,
$.parseJSON()
解析了它们,现在我有了2个数组,其中有3个对象。我想做的是,我想同时在两个数组上循环,这样我就可以检查两个数组循环中当前对象的
Post\u ID
s,如果它们相等或不相等,然后如果我发现
Post\u 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);
var posts=;
setInterval(函数(){
$.get(“admin/post/get_new_posts.php”{
用户标识:
},函数(数据){
data=$.parseJSON(数据);
对于(变量i=0;i
posts
变量有它的值,我通过将它们登录到控制台来确定它。现在这里发生的事情是,每十秒钟发送一个get请求,检查
posts
变量对象的Post\u ID是否与
data
变量的
Post\u ID
相等,然后在那里做些事情。但事实并非如此。这种情况一直在发生

是的,这是我的物品。第一个是
posts
变量,第二个是
data
变量

你知道如何在循环过程中循环变量或数组,同时检查属性吗?

你正在将
帖子中的每个条目与
数据中的每个条目进行比较。大多数都不匹配-
帖子[0]
不匹配
数据[1]
数据[2]
,等等

听起来您想查看每个列表的相应成员(
posts[0]
vs.
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
  }
}
//查找最长数组的长度
var maxi=Math.max(posts.length,data.length,0);
对于(变量i=0;i=posts.length)
{
//数据中的条目,但不是POST
}
else if(i>=data.length)
{
//日志中的条目,但不是数据
}
else if(数据[i].Post\u ID!=posts[i].Post\u ID)
{
//不匹配的ID
}
其他的
{
//匹配ID
}
}

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

由于两个数组具有相同的长度,因此应执行如下循环:

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

            }
    }
for(变量i=0;i