【问题标题】:NodeJs Multidimensional Array - Cannot read property of undefinedNodeJs多维数组 - 无法读取未定义的属性
【发布时间】: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


【解决方案1】:

我得到了一位大学同学的帮助。在“const i= cellid/10 -1, j= cellid%10 -1;”这一行中,i 将成为一个浮点数,而不是一个整数。那就是问题所在。我为我设置了天花板,问题解决了。

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 1970-01-01
    • 2015-10-23
    • 2017-03-06
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 2022-11-29
    相关资源
    最近更新 更多