JSON命名对象与具有name属性的数组

时间:2017-06-22 05:05:26

标签: javascript json

这可能是一个JS问题,我不确定。

我正在使用JSON来存储游戏中敌人的数据。我目前的结构如下:

{
  "Area 1": {
    "Enemy Name": {
      "type": "Human",
      "lvl": 30
    },
    "Enemy 2": {
      "type": "Human",
      "lvl": 30
    }
  },
  "Area 2": {
    "Enemy 1": {
      "type": "Human",
      "lvl": 30
    },
    "Enemy 2": {
      "type": "Human",
      "lvl": 30
    }
  }
}

我想知道是否应该使用"name"属性为每个区域使用一组敌人。像这样:

{
  "Area 1": [
    {
      "name": "Enemy Name",
      "type": "Human",
      "lvl": 10
    },
    {
      "name": "Enemy 2",
      "type": "Human",
      "lvl": 30
    }
  ],
  "Area 2": [
    {
      "name": "Enemy 1",
      "type": "Human",
      "lvl": 30
    },
    {
      "name": "Enemy 2",
      "type": "Human",
      "lvl": 30
    }
  ]
}

我认为第二种方式是我应该这样做,但想要其他人的反馈。我想从第一种方式来说,我需要知道敌人的名字以便读取他们的数据,而使用数组,我可以遍历这些区域并读取每个区域中的敌人。 在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

第二种选择是正确的。它结构合理,您可以轻松遍历任何区域以对敌人执行操作。我的建议是选择第二个。

var Map = [
  Area1: [
    {
      name: "Enemy 1";
      metaData: '...'
    },
    {
      name: "Enemy 2";
      metaData: '...'
    }
  ],
  Area2: [
    {
      name: "Enemy 1";
      metaData: '...'
    }
  ]
];

扫描特定区域内的敌人。

Map[Area1].forEach(function(enemy) {
  //Operation ...
});

我希望这会有所帮助。 :)