Javascript 函数不将参数视为对象数组

Javascript 函数不将参数视为对象数组,javascript,Javascript,我在函数的对象数组参数方面遇到了一些问题 实数编码: function drawTable(x,y,numero,t,e) { context.fillStyle = "#ffff66"; context.fillRect(x*146,y*146,55,55); var color; if (e[numero].tocado == "rojo") { color = "#cc3300" } else if (e[numero].to

我在函数的对象数组参数方面遇到了一些问题

实数编码:

function drawTable(x,y,numero,t,e) {

    context.fillStyle = "#ffff66";
    context.fillRect(x*146,y*146,55,55);


    var color;

    if (e[numero].tocado == "rojo") {
        color = "#cc3300"
    } else if (e[numero].tocado == "azul") {
        color = "#0099ff";
    } else {
        color = "#66ff66";
    }

    context.fillStyle = color;
    if (t==0 && x < 4) {
        context.fillRect((x*146)+55,(y*146)+9,91,39);
    }
    if (t==1){
        context.fillRect((x*146)+9,(y*146)+55,39,91);
    }

    if (x==4) {
        if (y<4) {
            if (t==1) {
                drawTable(0,y+1,numero+1,0,e);
            } else {
                drawTable(0,y,numero,1,e);
            }
        }
    } else {
        drawTable(x+1,y,numero+1,t,e);
    }
    return;     
}

socket.on("start", function (data) {
    game = data;
    drawTable(0,0,0,0,game.elements);
   //....
 }
"Data is a object:"
function Game() {
   this.turno = "";
   this.puntuacion_rojo = 0;
   this.puntuacion_azul = 0;
   this.elements = [];
}

"elements built"
 this.elements.push({
        id: 
        tipo: 
        tocado: ,
        left: 
        top: 
        width: 
        height:
        });
数据不是空的,我测试了它,它正确地从服务器返回

所以,问题是“cosa”认为“e不是一个对象数组

你错了
cosa
甚至从未被调用过。当抛出未捕获的异常时,线程停止。由于
e
未定义,因此这一行出现异常:

e[0].hello = "hello!";
如果要访问
e[0]
e
应该是一个数组:

var e = [];
如果您想访问
e[0]。hello
e[0]
应该是一个对象:

var e = [];
e[0] = {};
e[0].hello = "hello!":
或者将所有这些放在一行中:

var e = [{hello: "hello!"}];
所以,问题是“cosa”认为“e不是一个对象数组

你错了
cosa
甚至从未被调用过。当抛出未捕获的异常时,线程停止。由于
e
未定义,因此这一行出现异常:

e[0].hello = "hello!";
如果要访问
e[0]
e
应该是一个数组:

var e = [];
如果您想访问
e[0]。hello
e[0]
应该是一个对象:

var e = [];
e[0] = {};
e[0].hello = "hello!":
或者将所有这些放在一行中:

var e = [{hello: "hello!"}];


听起来像是
data.elements
是一个空数组,因此
e[0]
返回undefined。也许你想把
this.elements.push(…)
行放在游戏函数中?

听起来像
数据。elements
是一个空数组,所以
e[0]
返回未定义的。也许你想把
this.elements.push(…)
line放在游戏函数中?

Use
vare=[{}]。否则,它不是数组(因此您无法访问第0项),并且其中没有任何对象(因此您无法设置任何
hello
属性)
e
未定义的
而不是对象数组(您从未为
e
赋值)。为什么你认为JS应该认为它是一个对象数组呢?好吧,自动活体显示不在JS功能列表中,但它可能已经在了。))我真正想知道的是为什么这里甚至需要这种方法(使用对象数组)。更新以显示真实的代码,但可能
数据。元素
不存在。
console.log(data)
向您展示了什么?使用
vare=[{}]。否则,它不是数组(因此您无法访问第0项),并且其中没有任何对象(因此您无法设置任何
hello
属性)
e
未定义的
而不是对象数组(您从未为
e
赋值)。为什么你认为JS应该认为它是一个对象数组呢?好吧,自动活体显示不在JS功能列表中,但它可能已经在了。))我真正想知道的是为什么这里甚至需要这种方法(使用对象数组)。更新以显示真实的代码,但可能
数据。元素
不存在。
console.log(data)
向您展示了什么?或者
e[0][“hello”]=“hello”
问题是,我的变量是来自服务器的“data”变量的一部分,所以我有一个对象数组作为“data”的一部分。@user2657856:在示例代码中,您甚至没有对
数据进行任何操作。如果您将代码简化到可以改变问题的程度,那么您得到(可能)没有帮助的答案也就不足为奇了。或者
e[0][“hello”]=“hello”
问题在于我的var是服务器的“data”var的一部分,因此我有一个对象数组作为“data”的一部分@user2657856:在示例代码中,您甚至没有对
数据进行任何操作。如果您将代码简化到可以改变问题的程度,那么您得到(可能)毫无帮助的答案也就不足为奇了。我测试了声明:var a=data.elements[0],它不是空的,它有一些值,还有一些数据。elements[0]。设置了tocado。我测试了声明:var a=data.elements[0],它不是空的,它有一些值,还有一些数据。elements[0]。设置了tocado。