所以我有一些嵌套的东西。
grindstone:{
1:{
range: {
0: {min: 80 , max: 120},
1: {min: 100, max: 200},
2: {min: 180, max: 250},
3: {min: 230, max: 450},
4: {min: 430, max: 550}
}
},
...
稍后,在同一个文件中,我称之为,它看起来像:
grindVals(craft_id) {
var map = {};
var grind = this.rune;
var typeNumber = Number(craft_id.toString().slice(-4, -2))
if(typeNumber < 10){
typeNumber = Number (typeNumber.toString().slice(1));
}
map.set = grind.sets[Number(craft_id.toString().slice(0, -4))];
map.grade = grind.quality[Number(craft_id.toString().slice(-1))];
map.type = grind.effectTypes [typeNumber];
console.log("this.grindstone[" + typeNumber + "][" + Number(craft_id.toString().slice(-1))+ "].min");
--->Error Happens here
map.min = this.grindstone[typeNumber][Number(craft_id.toString().slice(-1))].min;
map.max = this.grindstone[typeNumber][Number(craft_id.toString().slice(-1))].max;
return map;
},
输出类似于:
this.grindstone [1] [2] .min
返回错误的行无法找到未定义的项目[2]。
我在这里做错了什么?
答案 0 :(得分:1)
您需要访问中间的range
属性(点表示法):
this.grindstone[typeNumber].range[Number(craft_id.toString().slice(-1))].min
// ^^^^^^
或(括号表示法)
this.grindstone[typeNumber]['range'][Number(craft_id.toString().slice(-1))].min
// ^^^^^^^^^
在此处详细了解property accessors或object initializer。
答案 1 :(得分:1)
您必须访问range
属性:
this.grindstone[1].range[2]
或者您可以在grindstone
对象中使用数组:
var grindstone = {
1 : [
{min: 80 , max: 120},
{min: 100, max: 200},
{min: 180, max: 250},
{min: 230, max: 450},
{min: 430, max: 550}
]
}
如果你使用第二种方法,你可以写:
this.grindstone[1][2]