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]);