我正在使用javascript数组编写代码,但我遇到了一个小问题。
我正在运行我为'蛇'创建的'init'函数,但输出对我来说有点奇怪。我确定那是因为我是javascript的新手。任何人都可以向我解释发生了什么事吗?如何让代码生成所需的输出?
var snake = {
direction : null,
head : null,
queue : null,
init: function(){
this.direction = RIGHT;
this.queue = []; // 2D ARRAY
this.head = []; // 1D ARRAY
this.insert([1,10]);
this.insert([2,20]);
this.insert([3,30]);
},
insert: function(x,y){
this.queue.unshift([x,y]); // INSERTS [X,Y]
this.head = this.queue[0];
console.log(this.head + "T0"); // prints: 1,10 T0
console.log(this.head[0] + " T1 "); // prints: 1,10 T1
console.log(this.head[1] + " T2 "); // prints: undefined T2
/*
I was expecting (DESIRED OUTPUT):
this.head to print 1,1
this.head[0] to print 1
this.head[1] to print 10
*/
}
答案 0 :(得分:2)
你的函数insert
有两个参数;一个用作第一个值,一个用作数组中的第二个值以取消移动到queue
。在调用函数时,你只传递一个参数(数组[1,10]
),它在未移位时可以用作第一个元素,第二个元素将是未定义的。
要解决您的问题,请使用this.insert(1,10);
调用您的函数,或将函数更改为只接受一个参数,然后this.queue.unshift(x);
。