Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Random_Queue_Detection - Fatal编程技术网

Javascript 检测数组对象是否为;“正在使用”;

Javascript 检测数组对象是否为;“正在使用”;,javascript,arrays,random,queue,detection,Javascript,Arrays,Random,Queue,Detection,我有一些脚本,它从服务器调用AJAX信息,然后将信息显示在页面上的块中。每8秒,这些信息块就会淡出一组新的信息 来自服务器的信息存储在固定队列中,该队列每8秒向服务器推送一次新项目 对于每个块,我都会从数组中随机抽取一个项目来显示。唯一的问题是我的积木有很多重复的 是否有方法检查并查看该数组项是否已从另一个块调用,如果是,它将继续查找另一个未使用的项 var queue = FixedQueue( 50 ); $(document).ready(function() {

我有一些脚本,它从服务器调用AJAX信息,然后将信息显示在页面上的块中。每8秒,这些信息块就会淡出一组新的信息

来自服务器的信息存储在固定队列中,该队列每8秒向服务器推送一次新项目

对于每个块,我都会从数组中随机抽取一个项目来显示。唯一的问题是我的积木有很多重复的

是否有方法检查并查看该数组项是否已从另一个块调用,如果是,它将继续查找另一个未使用的项

    var queue = FixedQueue( 50 );

    $(document).ready(function() {
     $('.submit').click(function(){
      setInterval(function(){
       queue.push(fulltweet);
     },8000);
    });
   });

    setInterval(function(){
        randotime = intervals[Math.floor(Math.random()*intervals.length)];
            $('.block1', '.photo1:nth-child(1)').queue(function(){
                $(this).hide();
                $(this).html(queue[0]);
                $(this).fadeIn(2000);
                $(this).delay(randotime);
                $(this).dequeue();
            });
            $('.block1', '.photo1:nth-child(1)').fadeOut(2000);
    },randotime);

我根据队列的长度创建了一个随机数,并使用它调用
队列[rando]
,但同样,我在块中不断得到重复项。

首先,如果您不想在数组中重复项,请不要让它们重复。在将新项目插入阵列之前,请控制它是否存在于阵列中。如果使用对象而不是基元类型(字符串、整数等),则使用相等操作可能不起作用。因此,在插入之前,您需要一个函数来检查数组中是否存在给定元素,并且该函数必须使用一个equals函数来比较两个给定对象

其次,javascript允许您在运行时向对象添加字段。因此,当一个块到达并显示一个对象时,可以在该对象上放置一个字段。比如说它的名字叫‘因纽斯’

当块A到达对象时:

object.inuse = true;
当块B随机到达同一对象时:

var object = pickRandomly();
while (object.inuse) {
    object = pickRandomly();
}
// here's the unique object which is not used by another block.
我希望这有帮助。
如果你能提供一个示例代码,我可以提供一个更好的答案。

你能发布你的代码吗?为什么你要随机选择一个而不是第一个?当您从队列中读取第一个值时,该值通常也会被删除,第二个值将成为第一个值。您永远不会选择相同的值两次。