测试未初始化的数组元素不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试未初始化的数组元素不起作用相关的知识,希望对你有一定的参考价值。

我正在尝试测试数组是否添加了第二个维度。它是我将新记录推到它上面,如果不是我添加第二个维度然后进行推送。我已经在多个地方读过测试未定义的第二维的方法,但它对我不起作用。这是代码:

if ( typeof missionData[numMissions][0] === 'undefined') {
    missionData[numMissions] = [];
    missionData[numMissions].push(missionRecords.record[index])
}
else {
    console.log('both array dimensions exist, pushing record');
    missionData[numMissions].push(missionRecords.record[index]);
}

执行时我收到以下错误:

controller.js:710 Uncaught TypeError: Cannot read property '0' of undefined

我读过的所有内容都告诉我,我所做的是正确的,但显然不是。我错过了什么?

谢谢.....

答案

missionData[numMissions]本身就是阵列。

您只需要访问第0个元素。检查数组是否存在。

if ( typeof missionData[numMissions] === 'undefined') {

就这样

if ( typeof missionData[numMissions] === 'undefined') {
    missionData[numMissions] = [];
    missionData[numMissions].push(missionRecords.record[index])
}
else {
    console.log('both array dimensions exist, pushing record');
    missionData[numMissions].push(missionRecords.record[index]);
}
另一答案

问题是您正在尝试访问不存在的数组的0位置的元素,因此您会收到该错误。并且你可以更干,因为你总是会推动missionRecords.record [index]无论如何:

//If undefined you can just use the !(not) operator.
if (!missionData[numMissions]) {
    missionData[numMissions] = [];
}
missionData[numMissions].push(missionRecords.record[index]

以上是关于测试未初始化的数组元素不起作用的主要内容,如果未能解决你的问题,请参考以下文章

共享元素片段转换不起作用

共享元素转换在父片段和子片段之间不起作用(嵌套片段)

游戏制作者数组未初始化

当我想模拟数据并测试 UI 片段时,doNothing() 不起作用

元素未显示并且:悬停在.svg上不起作用[重复]

当指针指向数组时,为啥 operator(*) 的值不起作用?