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

问题描述 投票:1回答:2

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

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

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

谢谢.....

javascript multidimensional-array
2个回答
0
投票

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

1
投票

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

//If undefined you can just use the !(not) operator.
if (!missionData[numMissions]) {
    missionData[numMissions] = [];
}
missionData[numMissions].push(missionRecords.record[index]
© www.soinside.com 2019 - 2024. All rights reserved.