簡體   English   中英

使用TypeScript遍歷JSON中的列表

[英]Iterating over a list in JSON using TypeScript

我在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
  }
] 

in某對象的鑰匙 ,而不是值進行迭代。 數組的鍵是其索引。 如果你使用of不是,您將使用新的迭代器協議和數組的迭代器提供的,而不是鍵的值。

for (let tribe of /* in */ hero.tribe) {

請注意,此功能不適用於IE 11,但適用於大多數其他瀏覽器以及與ES2015兼容的許多JS環境。 kangax / compat有部分列表。

在第二個循環中將“ in”更改為“ of”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM