我在显示随机选择的对象时遇到问题

时间:2017-02-26 23:19:50

标签: javascript html arrays variables object

我无法显示随机对象和该随机对象的属性。这个项目的目标是有一个stockItem列表,当我按下一个按钮时,它会选择一定数量的那些对象并将它们显示在HTML p标签中。现在,当我尝试显示它时,它打印为[对象]。目标是将所选对象的属性放在不同的行上。

以下是我正在使用的代码:

function buildShopItems(count) {
  var shopItems = [], i, itemIndex;
  count = stockItems.length < count ? stockItems.length : count;

  function getUniqueRandomItem() { //from stock
    var item;
    while (true) {
      item = stockItems[Math.floor(Math.random() * stockItems.length)];
      if (shopItems.indexOf(item) < 0) return item;
    }
  }

  for (i = 0; i < count; i++) {
    shopItems.push(getUniqueRandomItem());
  }
  return shopItems;
  console.log(shopItems);
}


var stockItems = [
  { item: "sword", type: "weapon", weight: "5 lbs.", cost: "10 gold" },
  { item: "hammer", type: "weapon", weight: "8 lbs.", cost: "7 gold" }
  //...
];


var shopItems = buildShopItems(1);


console.log(shopItems);

document.getElementById("item").innerHTML = shopItems.item;
document.getElementById("type").innerHTML = shopItems.type;
document.getElementById("weight").innerHTML = shopItems.weight;
document.getElementById("cost").innerHTML = shopItems.cost;

1 个答案:

答案 0 :(得分:0)

问题在于您使用indexOf。您可以使用indexOf搜索对象,因为在javascript中,您无法使用=====来比较对象,而indexOf会使用{​​{1}}。还为您做了一些语法更新。

===