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

时间:2018-02-28 17:23:07

标签: javascript multidimensional-array

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

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

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

感谢.....

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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]);
}