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