访问JSON整数元素

时间:2017-03-21 07:33:17

标签: javascript html arrays json

我有一个JSON-Object如下:

月份的输入是 customerSend,customerReceived,totalSendAllCustomers,totalReceivedAllCustomers

var emailObj = {
                "kundenNummer":17889,
                "jahre":
                {
                    2017:{
                        "Januar":[15,30,75,125],
                        "Februar":[17,32,77,127],
                        "März":[19,34,79,129],
                    },
                    2018:{
                        "Januar":[28,12,66,198],
                        "Oktober":[40,4,40,5],
                    }
                }
        }

我究竟如何访问特定年份? 我已经尝试过这样:

var keysYears = Object.keys(emailObj.jahre);
        var currentSelectedYear = keysYears[0];

        var keysMonth = Object.keys(emailObj.jahre[currentSelectedYear]);   
        var currentSelectedMonth = keysMonth[0];

        document.write(emailObj.jahre[currentSelectedYear].2017[0]);

我还尝试了其他一些方法,但我已经删除了这些。

您能告诉我如何访问2017年或2018年的数据吗? 我知道我可以将它们转换成字符串,但我想知道我是否也可以这样做。

4 个答案:

答案 0 :(得分:4)

您可以按名称调用对象emailObj的属性。

使用点符号

emailObj.kundenNummer

或用括号表示法

emailObj["kundenNummer"]

点符号在您的情况下不起作用,因为您的属性的名称是一个数字。然后你应该使用

emailObj.jahre["2017"]

var emailObj = {
  "kundenNummer": 17889,
  "jahre": {
    "2017": {
      "Januar": [15, 30, 75, 125],
      "Februar": [17, 32, 77, 127],
      "März": [19, 34, 79, 129],
    },
    "2018": {
      "Januar": [28, 12, 66, 198],
      "Oktober": [40, 4, 40, 5],
    }
  }
};

let year = "2017";
let month = "Januar";

console.log(emailObj.jahre[year][month]);

答案 1 :(得分:1)

您应该使用bracket表示法。

document.write(emailObj.jahre[currentSelectedYear][currentSelectedMonth][0]);

var emailObj = {
                "kundenNummer":17889,
                "jahre":
                {
                    2017:{
                        "Januar":[15,30,75,125],
                        "Februar":[17,32,77,127],
                        "März":[19,34,79,129],
                    },
                    2018:{
                        "Januar":[28,12,66,198],
                        "Oktober":[40,4,40,5],
                    }
                }
        }
var keysYears = Object.keys(emailObj.jahre);
var currentSelectedYear = keysYears[0];
var keysMonth = Object.keys(emailObj.jahre[currentSelectedYear]);   
var currentSelectedMonth = keysMonth[0];
document.write(emailObj.jahre[currentSelectedYear][currentSelectedMonth][0]);

答案 2 :(得分:0)

在JavaScript对象中,key始终是一个字符串,即使您使用整数它也会转换为字符串

obj = {
    key1: //contents
    key2: //contents
}

要访问特定密钥:

obj.key1
obj['key1']

对于你的例子:

emailObj.jahre['2017']
emailObj['jahre']['2017']

使用for in循环结构遍历对象的键:

var emailObj = {
    "kundenNummer":17889,
    "jahre": {
        2017:{
            "Januar":[15,30,75,125],
            "Februar":[17,32,77,127],
            "März":[19,34,79,129],
        },
        2018:{
            "Januar":[28,12,66,198],
            "Oktober":[40,4,40,5],
        }
    }
}

for (key in emailObj.jahre) {
    console.log(emailObj.jahre[key]) //Here key will be '2017', '2018' etc
}

答案 3 :(得分:0)

您无法使用包含JavaScript中的数字作为名称的点表示法属性进行访问。相反,您应该考虑使用括号表示法。

示例:

emailObj.jahre['2017']



var emailObj = {
  "kundenNummer": 17889,
  "jahre": {
    2017: {
      "Januar": [15, 30, 75, 125],
      "Februar": [17, 32, 77, 127],
      "März": [19, 34, 79, 129],
    },
    2018: {
      "Januar": [28, 12, 66, 198],
      "Oktober": [40, 4, 40, 5],
    }
  }
};
console.log(emailObj['jahre']['2017']);
console.log(emailObj.jahre['2017']);