【发布时间】:2018-10-29 00:26:37
【问题描述】:
var geartable = {
shittyboots: {
name: "Shitty Boots",
cost: "500"
},
shittyarmor: {
name: "Shitty Armor",
cost: "1000"
},
shittyhelmet: {
name: "Shitty Helmet",
cost: "750"
}
};
var shops = {
positions: [
[2, 3],
[0, 1],
[2, 4]
],
inventory: [
[geartable.shittyboots.name, geartable.shittyboots.cost, "Available"],
[geartable.shittyarmor.name, geartable.shittyarmor.cost, "Available"],
[geartable.shittyhelmet.name, geartable.shittyhelmet.cost, "Available"]
]
};
function pickRandomItem(gearlist) {
var result;
var count = 0;
for (var item in gearlist) {
if (Math.random() < 1 / ++count) {
result = item;
}
}
console.log(geartable.result.cost);
return result;
}
你好。所以,简单地说,我的问题是我正在尝试访问父对象属性的索引/属性,但是当我在 geartable 上运行随机选择器函数 (pickRandomItem) 并尝试访问结果的属性时,它告诉我 geartable.result.cost 是未定义的。我认为这是因为,出于某种被上帝遗忘的原因,JavaScript 试图在 geartable 内查找属性“result”,而不是在 geartable 内查找具有 result 值的属性。
有没有办法解决这个问题?我已经走到了尽头,我无法想象会有,因为对象嵌套已经很灵活了。我已经尝试用数组代替嵌套对象,但 geartable.result[0]... 等仍然返回未定义。
如果您好奇,这是 JavaScript 控制台中的错误:
pickRandomItem(geartable);
TypeError: geartable.result is undefined; can't access its "cost" property[Learn More]
【问题讨论】:
-
我认为我明白了。你想要
geartable[result].cost吗? -
你是救生员。谢谢,伙计。
标签: javascript object random properties nested