Javascript 错误:值.pos[i]未定义

Javascript 错误:值.pos[i]未定义,javascript,arrays,Javascript,Arrays,我有一个这样的数组(这是许多数组中的一个): 然后我验证类型,然后根据类型进行绘制 function caminho(c, a) { c.beginPath(); a.forEach(function(value, i) { if (value.tipo === "m") { c.moveTo(value.pos[i][0], value.pos[i][1]); console.log(value.pos); } else if (value.tipo === "l") {

我有一个这样的数组(这是许多数组中的一个):

然后我验证类型,然后根据类型进行绘制

function caminho(c, a) {
c.beginPath();
a.forEach(function(value, i) {
if (value.tipo === "m") {
  c.moveTo(value.pos[i][0], value.pos[i][1]);
  console.log(value.pos);
  } else if (value.tipo === "l") {
       value.pos.forEach(function(pos, j) {
          c.lineTo(pos[0], pos[1]);
    });

    }
    else if(value.tipo === "q") {
      value.pos.forEach(function(pos,j) {
          c.quadraticCurveTo(pos[0], pos[1], pos[2], pos[3]);
    });
}
    else if(value.tipo === "a") {
    value.pos.forEach(function(pos,j) {
        c.arc(pos[0],pos[1],pos[2],pos[3],pos[4]);
    });
}
   else if(value.tipo === "b") {
    value.pos.forEach(function(pos,j) {
        c.bezierCurveTo(pos[0],pos[1],pos[2],pos[3],pos[4],pos[5]);
    })
}
 });
  c.closePath();
  }
问题是因为我得到了这个错误,但是如果我从T1函数中删除最后一种类型的“m”,它就可以正常工作。 我想对T1做的基本上是这样的,但使用我在数组中使用的结构:

c2d.beginPath(); 
    c2d.moveTo(0, 0);
    c2d.bezierCurveTo(0,0.223,0.1,0.5,0.11,0.5);
    c2d.moveTo(0, 0);
c2d.closePath();

i
变量表示数组中项目的索引。所以它将是0,1,2

但您的
pos
数组中只有一个元素,正如您所讨论的示例所示。因此,请从中替换此loc

c.moveTo(value.pos[i][0], value.pos[i][1]);

完整代码在这里

功能卡米尼奥(c,a){
c、 beginPath();
a、 forEach(函数(值,i){
如果(value.tipo==“m”){
c、 移动到(value.pos[0][0],value.pos[0][1]);
控制台日志(value.pos);
}否则如果(value.tipo==“l”){
值pos.forEach(函数(pos,j){
c、 lineTo(位置[0],位置[1]);
});
}否则如果(value.tipo==“q”){
值pos.forEach(函数(pos,j){
c、 二次曲线(位置[0],位置[1],位置[2],位置[3]);
});
}否则如果(value.tipo==“a”){
值pos.forEach(函数(pos,j){
c、 arc(位置[0],位置[1],位置[2],位置[3],位置[4]);
});
}否则如果(value.tipo==“b”){
值pos.forEach(函数(pos,j){
c、 贝塞尔曲线图(位置[0],位置[1],位置[2],位置[3],位置[4],位置[5]);
});
}
});
c、 closePath();

}
只是一个猜测,似乎不是
value。tipo
应该是
value。type
是的,但问题不是,我现在只是将tipo改为type。
c.moveTo(value.pos[i][0], value.pos[i][1]);
c.moveTo(value.pos[0][0], value.pos[0][1]);