【发布时间】:2020-11-07 08:31:08
【问题描述】:
我正在尝试使用动态索引 i,j 更改多维数组(9 行,每行有 9 个元素,每个元素是 4 个元素的数组)中元素的值,但我收到错误“不能读取未定义的属性 '8'”,其中 8 是 i 的值。如果我将 i,j 替换为 1,2 等固定数字,则不会出现错误。请注意,变量 cellid 将是一个两位数,例如 11,12...19 、 21,22....29 、 91,92....99 。我正在使用该数字提取相应的索引值 i 和 j。
io.on("connect", (socket) =>{
console.log("socket id" + socket.id);
socket.on("inputnum", inputnum => {
const issuccess = dotask(inputnum, socket.id);
if(issuccess)
socket.emit("inputnumchanged", object)
})
}
function dotask(inputnum, socketid){
var cellid = null;
object.highlightedcell.forEach(e => {
if(e.clientid == socketid)
cellid = e.cellid;
})
if(!cellid)
return null; //no cell was selected
const i= cellid/10 -1 , j= cellid%10 -1;
object.initialarray[i][j][2] = inputnum;
return 1;
}
这就是对象“对象”的样子
{ initialarray: [
[
[ 7, 1, 0, 0 ],
[ 9, 1, 0, 0 ],
[ 2, 1, 0, 0 ],
[ 4, 0, 0, 0 ],
[ 8, 1, 0, 0 ],
[ 3, 0, 0, 0 ],
[ 6, 1, 0, 0 ],
[ 5, 0, 0, 0 ],
[ 1, 0, 0, 0 ]
],
[
[ 8, 0, 0, 0 ],
[ 6, 0, 0, 0 ],
[ 5, 1, 0, 0 ],
[ 9, 0, 0, 0 ],
[ 7, 0, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 4, 0, 0, 0 ],
[ 3, 1, 0, 0 ],
[ 2, 1, 0, 0 ]
],
[
[ 4, 0, 0, 0 ],
[ 3, 0, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 6, 1, 0, 0 ],
[ 5, 1, 0, 0 ],
[ 2, 0, 0, 0 ],
[ 9, 0, 0, 0 ],
[ 7, 1, 0, 0 ],
[ 8, 0, 0, 0 ]
],
[
[ 9, 0, 0, 0 ],
[ 5, 0, 0, 0 ],
[ 8, 1, 0, 0 ],
[ 7, 0, 0, 0 ],
[ 6, 1, 0, 0 ],
[ 4, 0, 0, 0 ],
[ 2, 1, 0, 0 ],
[ 1, 0, 0, 0 ],
[ 3, 1, 0, 0 ]
],
[
[ 6, 1, 0, 0 ],
[ 7, 1, 0, 0 ],
[ 3, 1, 0, 0 ],
[ 2, 1, 0, 0 ],
[ 1, 0, 0, 0 ],
[ 9, 1, 0, 0 ],
[ 8, 0, 0, 0 ],
[ 4, 1, 0, 0 ],
[ 5, 0, 0, 0 ]
],
[
[ 2, 0, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 4, 0, 0, 0 ],
[ 8, 1, 0, 0 ],
[ 3, 0, 0, 0 ],
[ 5, 0, 0, 0 ],
[ 7, 1, 0, 0 ],
[ 9, 0, 0, 0 ],
[ 6, 1, 0, 0 ]
],
[
[ 5, 1, 0, 0 ],
[ 8, 0, 0, 0 ],
[ 9, 0, 0, 0 ],
[ 1, 0, 0, 0 ],
[ 4, 1, 0, 0 ],
[ 6, 1, 0, 0 ],
[ 3, 1, 0, 0 ],
[ 2, 0, 0, 0 ],
[ 7, 1, 0, 0 ]
],
[
[ 3, 0, 0, 0 ],
[ 4, 1, 0, 0 ],
[ 7, 1, 0, 0 ],
[ 5, 1, 0, 0 ],
[ 2, 0, 0, 0 ],
[ 8, 1, 0, 0 ],
[ 1, 0, 0, 0 ],
[ 6, 0, 0, 0 ],
[ 9, 1, 0, 0 ]
],
[
[ 1, 1, 0, 0 ],
[ 2, 1, 0, 0 ],
[ 6, 0, 0, 0 ],
[ 3, 1, 0, 0 ],
[ 9, 1, 0, 0 ],
[ 7, 1, 0, 0 ],
[ 5, 0, 0, 0 ],
[ 8, 1, 0, 0 ],
[ 4, 0, 0, 0 ]
]
],
highlightedcell : [],
inputnum : {inputnum: null, inputterid : null},
correctcount : 0,
requiredcorrect : 81-43,
issolved : 0
}
这是来自控制台的错误截图。
【问题讨论】:
-
问题中有错字。 ""Cannot read property '8' of undefined" 其中 8 是 i 的值。 8 不是“i”的值,而是“j”的值
标签: javascript node.js multidimensional-array socket.io