【问题标题】:Accessing Elements of JS Object访问 JS 对象的元素
【发布时间】:2017-09-04 16:57:18
【问题描述】:

我在一个对象中创建了数组,

var obj_report_dailog = { array_report_dailog : [] }

然后将数据推送到对象,

obj_report_dialog.array_report_dialog.push({from: fromDate})
obj_report_dialog.array_report_dialog.push({to: toDate})
obj_report_dialog.array_report_dialog.push({fabrika: fabrika})

那么,

var json = JSON.stringify(obj_report_dialog);

如何访问该对象的元素?

console.log("işte bu: " + json); 

输出:

işte bu: {"array_report_dialog":[{"from":"2017-08-01"},{"to":"2017-09-21"},{"fabrika":["Balçova"]}]}

【问题讨论】:

  • json.array_report_dialog[0]etc。就像一个普通的数组。
  • 当你想访问 json/object 时,你为什么要做JSON.stringify
  • @HimanshuAggarwal:不是“json/object”,只是对象。

标签: javascript arrays json node.js


【解决方案1】:

两件事:

  1. 您不想JSON.stringify,除非您将生成的 string 发送到可以解析它的地方。请记住,JSON 是一种用于数据交换的文本表示法; JSON.stringify 给你一个字符串来发送给某个接收者。当您拥有 JSON 字符串时,您不要访问其中的对象的属性。

    如果您接收该 JSON 字符串,您将通过 JSON.parse 对其进行解析,然后访问结果中的属性。

  2. 撇开 JSON 问题不谈,您可能不想以添加数据的方式添加数据。您将三个单独的对象添加为数组中的三个条目,每个条目都有一个属性。您可能想要推送具有所有三个属性的 一个 对象:

    obj_report_dialog.array_report_dialog.push({
        from: fromDate,
        to: toDate,
        fabrika: fabrika
    });
    

    然后您可以以obj_report_dialog.array_report_dialog[0].fromobj_report_dialog.array_report_dialog[0].toobj_report_dialog.array_report_dialog[0].fabrika 的身份访问它们。或者更有可能,你会有这样的循环:

    obj_report_dialog.array_report_dialog.forEach(function(entry) {
        // Use entry.from, entry.to, and entry.fabrika here
    });
    

    (有关循环数组的更多选项,请参阅this answer。)

    但是,如果您真的想将它们作为单独的对象推送,您可以使用obj_report_dialog.array_report_dialog[0].fromobj_report_dialog.array_report_dialog[1].toobj_report_dialog.array_report_dialog[2].fabrika 访问它们(注意索引会上升)。

【讨论】:

    【解决方案2】:

    如果你 stringifyjson,它会为你的对象创建一个字符串表示形式。

    要访问这样的字符串中的数据,我们通常使用JSON.parse 从字符串创建一个 json 对象。这是您一开始的obj_report_dailog

    【讨论】:

      【解决方案3】:

      您可以使用 JSON.parse() 从 json 创建对象

      JSON.parse(json).array_report_dialog
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-22
        • 2019-01-02
        • 2011-01-16
        • 1970-01-01
        • 2021-09-27
        • 2022-12-09
        • 2014-10-01
        • 2018-02-17
        相关资源
        最近更新 更多