首页 > 解决方案 > 从列表中选择的对象读取 [object Object]

问题描述

我正在用 JavaScript 开发一个网页游戏,我有一些对象数组。出于某种原因,我遇到了这个问题:当我从数组中随机选择一个对象时:

function Weapon(name, type, ranged, hitChance, rarity){
  this.name = name;
  this.type = type;
  this.ranged = ranged;
  this.hitChance = hitChance;
}

var weapons = [
  new Weapon("Dagger", "weapon", false, 100, 3),
  new Weapon("Katana", "weapon", false, 100, 2),
  new Weapon("Throwing Dagger", "weapon", true, 60, 2),
  new Weapon("Crossbow", "weapon", true, 75, 3),
  new Weapon("Grenade", "weapon", true, 85, 1),
  new Weapon("Molotov", "weapon", true, 95, 1),
  new Weapon("Axe", "weapon", false, 80, 3),
  new Weapon("Hammer", "weapon", false, 60, 3),
  new Weapon("Handgun", "weapon", true, 90, 1),
  new Weapon("Hatchet", "weapon", false, 80, 2),
  new Weapon("Switchblade", "weapon", false, 70, 2),
  new Weapon("Fishing Knife", "weapon", false, 75, 2),
  new Weapon("Satchel Charge", "weapon", false, 90, 1)
];
var itemToGive = weapons[Math.floor(Math.random() * weapons.length)];
//Returns [object Object]

由于某种原因itemToGive等于[object Object]

我听说 JavaScript 不会跟踪对象以防止滞后或类似的东西。如何让变量仅作为对象之一读取?

编辑:现在它返回未定义,而不是 [object Object]

标签: javascriptarraysobject

解决方案


您的代码工作正常,变量itemToGive是您认为应该是的对象。[object object]只是您在字符串转换时遇到的一些问题。运行下面的代码片段

function Weapon(name, type, ranged, hitChance, rarity){
  this.name = name;
  this.type = type;
  this.ranged = ranged;
  this.hitChance = hitChance;
}

var weapons = [
  new Weapon("Dagger", "weapon", false, 100, 3),
  new Weapon("Katana", "weapon", false, 100, 2),
  new Weapon("Throwing Dagger", "weapon", true, 60, 2),
  new Weapon("Crossbow", "weapon", true, 75, 3),
  new Weapon("Grenade", "weapon", true, 85, 1),
  new Weapon("Molotov", "weapon", true, 95, 1),
  new Weapon("Axe", "weapon", false, 80, 3),
  new Weapon("Hammer", "weapon", false, 60, 3),
  new Weapon("Handgun", "weapon", true, 90, 1),
  new Weapon("Hatchet", "weapon", false, 80, 2),
  new Weapon("Switchblade", "weapon", false, 70, 2),
  new Weapon("Fishing Knife", "weapon", false, 75, 2),
  new Weapon("Satchel Charge", "weapon", false, 90, 1)
];
var itemToGive = weapons[Math.floor(Math.random() * weapons.length)];

console.log(itemToGive);


推荐阅读