JavaScript中向对象推入数组报错:Cannot read properties of undefined
问题分析与解决
错误原因
你遇到的Cannot read properties of undefined (reading 'push')错误,核心原因是**objPicked只做了变量声明,没有初始化**。未初始化的变量默认值为undefined,而undefined不是数组类型,不存在push方法,调用自然会报错。
修正方案
方案1:将objPicked初始化为数组
如果你的需求是用objPicked存储多个类似arrPlayer的数组,直接把它初始化为空数组即可:
//global vars var arrPlayer = []; var objPicked = []; // 初始化空数组 $(document).ready(function() { arrPlayer = [{'PlayerID':3}, {'Num': '--'}, {'First': 'John'}, {'Last': 'Smith' }, {'Position': 'QB'}]; objPicked.push(arrPlayer); // 现在可正常执行 });
方案2:推入对象内部的数组属性
如果你的真实需求是把数组存入对象的数组属性中(比如objPicked是一个包含数组的对象),需要先初始化对象及其内部的数组属性:
//global vars var arrPlayer = []; var objPicked = { players: [] }; // 初始化对象,内部包含空数组属性 $(document).ready(function() { arrPlayer = [{'PlayerID':3}, {'Num': '--'}, {'First': 'John'}, {'Last': 'Smith' }, {'Position': 'QB'}]; objPicked.players.push(arrPlayer); // 往对象内的数组属性中push });
内容的提问来源于stack exchange,提问作者LauraNMS
相关产品推荐
相关产品推荐

