这个功能似乎给我带来了麻烦。我在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。这会导致更麻烦的日志。
谢谢大家阅读:)我感谢任何回应。