Javascript,数组在不同的地方显示不同的长度

时间:2018-05-02 16:29:00

标签: javascript arrays

我不知道我的数组有什么问题。我想检查数组中的元素,x和y等于pos.x和pos.y.如果不是我想推它。 我的代码:

checkSteps(pos) {
    for(let i = 0; i < this.path.steps.length; i++){
        if(this.path.steps[i].x == pos.x && this.path.steps[i].y == pos.y) return false;
    }
    this.path.steps.push({
        x: pos.x,
        y: pos.y,
    });
    console.log(this.path);
    return true;
}

我不知道为什么我不能this.path.steps.push(pos);代替this.path.steps.push({x: pos.x,y: pos.y,});

console.log()给我:

JSON

1 个答案:

答案 0 :(得分:0)

当您记录数组或对象(或任何不是原始的对象)时,控制台会在日志发生时显示对象/数组的行(片段),并缓存对该对象的引用/阵列。

稍后展开对象/数组时,控制台将使用先前缓存的引用列出对象/数组内容。对象/数组可能在您展开时已经更改,这就是控制台为您提供此消息的原因:

console

通知您列出的值刚被(重新)评估过。

<强>演示:

打开你的控制台并输入:

var arr = [];
console.log(arr);

setTimeout(function() {
    arr.push(0, 1, 2, 3, 4, 5);
    console.log("Unfold the above array now");
}, 5000);

等待"Unfold the above array now"消息然后展开先前记录的空数组并查看。