如何从javascript中删除队列中的元素?

时间:2017-07-07 10:42:16

标签: javascript jquery stack queue

我试图在javascript中使用队列。我指的是this link

我能够添加到队列中,但在尝试从队列中删除时,我并没有完全成功。

var queue = [];
var input = $(".text").text();
for (var i = 0; i < input.length; i++) {
  queue.push("<span class='charToFade'>" + input.charAt(i) +"</span>");
}
$(".text").text("");
for (var j = 0; j < queue.length; j++) {
  $(".text").append(queue.shift());
}

输入:

<div class="text">Phone</div>

输出:

Pho

您可以查看Jsfiddle

任何人都可以帮助我吗

3 个答案:

答案 0 :(得分:2)

您遇到的问题是,对于队列的每次迭代,都会删除一个项目。

这改变了对for循环条件的预期评估,因为队列的长度每次都在变化,var j的大约一半等于队列的长度。

我建议使用while循环而不是for:

while(queue.length > 0){
 $(".text").append(queue.shift());
}

答案 1 :(得分:1)

当你在每次迭代中循环queue时,长度将减少1.因此它不会完全迭代。

var queue = [];
var input = $(".text").text();
for (var i = 0; i < input.length; i++) {
  queue.push("<span class='charToFade'>" + input.charAt(i) + "</span>");
}
$(".text").text("");
var l = queue.length;
for (var j = 0; j <l ; j++) {
    var e = queue.shift();
  $(".text").append(e);    
}

答案 2 :(得分:1)

另一种方法,使用for-loop:

var queue = [];
var input = $(".text").text();
for (var i = 0; i < input.length; i++) {
  queue.push("<span class='charToFade'>" + input.charAt(i) +"</span>");
}
$(".text").text("");

// change here
for (var j = queue.length; j >= 0; j--) {
  $(".text").append(queue.shift());
}