如何访问嵌套元素

时间:2017-07-22 08:26:53

标签: javascript json object electron

所以我有一些嵌套的东西。

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]。

我在这里做错了什么?

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 accessorsobject 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]