【问题标题】:Accessing a JSON integer element访问 JSON 整数元素
【发布时间】:2017-08-12 17:57:46
【问题描述】:

我有一个 JSON 对象,如下所示:

月份的输入是 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 年的数据吗? 我知道我可以将它们转换为字符串,但我想知道我是否也可以这样做。

【问题讨论】:

  • emailObj.jahre['2017'].Januar[0]

标签: javascript html arrays json


【解决方案1】:

您可以通过名称调用对象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]);

【讨论】:

  • 谢谢,这让我清楚地了解了何时使用点以及何时使用括号。
【解决方案2】:

您应该使用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]);

【讨论】:

    【解决方案3】:

    在 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
    }
    

    【讨论】:

      【解决方案4】:

      在 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']);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-14
        • 1970-01-01
        • 1970-01-01
        • 2019-09-30
        • 2016-11-01
        • 2012-09-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多