我在遍历TypeScript中的json时遇到问题。我在使用一个特定的json字段tribe
时遇到麻烦。由于某种原因,我无法遍历那个。在调试器中,我期望Orc
出现,但是我得到了0
。为什么是这样?如何正确遍历我的tribe
数据?
// Maps a profession or tribe group name to a bucket of characters
let professionMap = new Map<string, Character[]>()
let tribeMap = new Map<string, Character[]>()
let herolistJson = require('./data/HeroList.json')
for (let hero of herolistJson){
// Certain characters can have more than one tribe
// !!!!! The trouble begins here, tribe is 0???
for (let tribe in hero.tribe){
let tribeBucket = tribeMap.get(tribe) as Character[]
// If the hero does not already exist in this tribe bucket, add it
if(tribeBucket.find(x => x.name == hero.name) === undefined )
{
tribeBucket.push(new Character(hero.name, hero.tribe, hero.profession, hero.cost))
}
}
}
我的json文件看起来像这样
[
{
"name": "Axe",
"tribe": ["Orc"],
"profession": "Warrior",
"cost": 1
},
{
"name": "Enchantress",
"tribe": ["Beast"],
"profession": "Druid",
"cost": 1
}
]
答案 0 :(得分:1)
in
遍历对象的键,而不是值。数组的键是其索引。如果改用of
,则将使用较新的迭代器协议,并且Array's iterator提供值而不是键。
for (let tribe of /* in */ hero.tribe) {
请注意,此功能不适用于IE 11,但适用于大多数其他浏览器以及与ES2015兼容的许多JS环境。 kangax/compat有部分列表。
答案 1 :(得分:1)
在第二个循环中将“ in”更改为“ of”。