创建嵌套数组:JavaScript数组定义错误及访问问题排查
问题分析与修复方案
核心错误点
- 你把
digiList定义成了数组,但却想用对象的点语法(digiList.egg.name)访问数据,数组只能通过索引(比如[0])访问元素,无法通过键名调用。 - 内部的
egg = []这种写法是变量赋值语句,不是对象的键值对结构,这会导致全局变量泄漏,还直接引发了"Egg is not defined"的错误。 - 原代码存在多处括号不匹配的语法错误,比如
baby数组末尾缺少闭合的],整体结构混乱。
修复后的代码
将digiList改为对象,用键值对的形式存储各个子数组,同时修正语法错误:
const digiList = { egg: [ { id:"blue", eggtype:"blue", digivolution:"Punimon", image:"../Images/Blue Egg - mobile.png" } ], baby: [ { id:"botamon", name:"Botamon", stage:"Baby", type:"Data", preDigivolution:["green"], digivolution:["Koromon"], image: "https://www.grindosaur.com/img/games/digimon-world/digimon/12-botamon.jpg" } ], intraining: [ { id:"koromon", name:"Koromon", stage:"In-training", type:"Data", preDigivolution:["Botamon"], digivolution:["Agumon","Gabumon","Kunemon"], image: "https://www.grindosaur.com/img/games/digimon-world/digimon/50-koromon.jpg" } ] }
正确访问方式
注意每个属性都是数组,需要先通过索引定位到数组里的对象,再访问对象的属性:
- 访问baby阶段第一个数码宝贝的名字:
console.log(digiList.baby[0].name) - 访问egg数组第一个对象的id:
console.log(digiList.egg[0].id) - 访问intraining阶段第一个数码宝贝的进化列表:
console.log(digiList.intraining[0].digivolution)
内容的提问来源于stack exchange,提问作者Learning Smart
相关产品推荐
相关产品推荐

