我成功导出了一个函数,该函数返回一个数组,并从另一个JavaScript文件中调用该函数。当我尝试获取数组的长度时,会引发此错误
无法读取未定义的属性“ length”
我通过使用console.log(ModelItems)
验证了数组不为空。
当我使用如下所示的硬编码数组时,错误未显示
var ModelItems = [{name: "bla"},{name: "blaBla"},]
_getListItems()
函数通过将上述数组作为参数来调用_constructListArrayModel
中的app.js
函数。 _constructListArrayModel
函数尝试获取数组的长度,但引发上述错误。
我只想获取数组的长度才能运行for循环。
//ModelItems.js that exports the array
module.exports = {
getModelArray: function(uid) {
firebase.database().ref('ArArray').child(uid).once('value').then(function(snapshot){
const exists = (snapshot.val() !== null)
data = snapshot.val()
var ModelItems = []
for(var obj in data){
ModelItems.push({
name: data.name,
selected: false,
loading: LoadingConstants.NONE,
icon_img: data.icon_img,
obj: data.obj,
materials: null,
animation:{name:"01", delay:0, loop:true, run:true},
scale: [0.2, 0.2, 0.2],
position : [0, 5*0.05, 10],
type : "OBJ",
physics: undefined,
ref_pointer: undefined,
shadow_width: 60.5,
shadow_height: 60.5,
spotlight_position_y: 100,
lighting_mode: "IBL",
})
}
console.log(ModelItems)
return ModelItems
})
}
}
// app.js that calls the function
_getListItems() {
if(this.props.listMode == UIConstants.LIST_MODE_MODEL){
return this._constructListArrayModel(ModelData.getModelArray(firebase.auth().currentUser.uid), this.props.modelItems);
}
else
{
return null
}
}
//
_constructListArrayModel(sourceArray, items) {
var listArrayModel = [];
for(var i =0; i<sourceArray.length; i++) {
listArrayModel.push({icon_img:sourceArray[i].icon_img, loading:this._getLoadingforModelIndex(i, items)})
}
return listArrayModel;
}