containsObject函数不对吗?我没有得到正确的console.logs

时间:2014-10-26 12:51:05

标签: javascript json function setinterval

这个功能似乎给我带来了麻烦。我在if语句中使用此函数来检查JSON中的对象是否与Array中的某个项相同。

que是一个数组 obj

var que = [];// first item is a random object from rects JSON.

rects是一个JSON 列表

var rects = [{x: 7, y: 7, w: 90, h: 110, color: "Green"},
        {x: 107, y: 7, w: 90, h: 110, color: "Red"},
        {x: 7, y: 127, w: 90, h: 110, color: "Blue"},
        {x: 7, y: 247, w: 90, h: 110, color: "Gold"},
        {x: 107, y: 247, w: 90, h: 110, color: "Purple"},
        {x: 205, y: 7, w: 90, h: 110, color: "Pink"},
        {x: 205, y: 127, w: 90, h: 110, color: "Orange"},
        {x: 205, y: 247, w: 90, h: 110, color: "Lightseagreen"},
        {x: 107, y: 127, w: 90, h: 110, color: "Brown"}];


function containsObject(obj, list) {
    "use strict";
    var i = 0, j = 0;
    for (i = 0; i < obj.length; i += 1) {
        for (j = 0; j < list.length; j += 1) {
            if (list[j] === obj[i]) {
                return true;
            }
        }
    }
    return false;
}

这是if语句!

function computer() {
    "use strict";
    var counter = 0, i = setInterval(function () {
    // do your thing
        if (containsObject(que, rects)) {
            turnEvent(que[counter].x, que[counter].y);
            counter += 1;
        }
        console.log("counter: " + counter);
        console.log("que: " + que.length);
        if (counter === que.length) {
            clearInterval(i);
            userTurn = true;

        }
    }, 500);
}

当que.length大于2时,它似乎会产生,例如,如果que.lenght = 2 ...程序似乎使containsObject函数的2个实例好像对于que中的每个项目,程序计算与que中的项目一样多的实例。

从计算机()函数中取出控制台日志,我得到这些日志:

counter: 1 
que: 2 
counter: 1 
que: 2 
counter: 2 
que: 2 
counter: 2 
que: 2 

应该只是:

counter: 1
que: 2
counter: 2
que: 2

PS。总是在计算机功能完成后,我将新项添加到que Array。这会导致更麻烦的日志。

谢谢大家阅读:)我感谢任何回应。

0 个答案:

没有答案